这几乎肯定是一个重复的问题,但我无法在SO上的任何地方找到答案。大多数其他类似的问题与一列中的子集相关,而不是整个数据框。r:删除任何列中包含数字的行
我有一个数据帧:
test = data.frame(
'A' = c(.31562, .48845, .27828, -999),
'B' = c(.5674, 5.7892, .4687, .1345),
'C' = c(-999, .3145, .0641, -999))
我想删除其中任何列包含-999,让自己的数据帧将看起来像这样排:
A B C
2 0.48845 5.7892 0.3145
3 0.27828 0.4687 0.0641
我肯定有是使用subset()函数或apply()完成此操作的简单方法,但我无法弄清楚。
我尝试这样做:
test[apply(test, MARGIN = 1, FUN = function(x) {-999 != x}), ]
但它返回:
A B C
1 0.31562 0.5674 -999.0000
2 0.48845 5.7892 0.3145
4 -999.00000 0.1345 -999.0000
NA NA NA NA
NA.1 NA NA NA
NA.2 NA NA NA
NA.3 NA NA NA
NA.4 NA NA NA
NA.5 NA NA NA
'测试[!适用(试验,1,函数(r)的任何(R = = -999)),]' – bouncyball
你可以在处理这个更早的阶段:当在集合中读入时'na.strings =“ - 999”'。然后可以使用通常用于删除丢失数据的行的工具。 – user20650
使用'rowSums',你可以做'test [rowSums(test == -999)== 0,]',但是在read参数中使用'na.strings'是更好的选择。 – lmo