使用NA中的NA更改我的参数下的所有值

时间:2017-04-05 13:54:40

标签: r dataframe

我有一个大的113x159数据框,如下所示:

 i1 i2 i3 i4 
1 49 76 3  65
2 35 14 37 98 
3 90 17 71 27 
4 27 65 54 88

我需要更改所有值< 20到NA,像这样:

 i1 i2 i3 i4 
 1 49 76 NA 65
 2 35 NA 37 98 
 3 90 NA 71 27 
 4 27 65 54 88

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这适用于您的示例,该示例包含所有数字列。

is.na(df) <- df < 20

df
  i1 i2 i3 i4
1 49 76 NA 65
2 35 NA 37 98
3 90 NA 71 27
4 27 65 54 88

对于真实数据集,您似乎有因子列。在这种情况下,您应该使用sapply来检查每列的类型,并仅在数字列上执行替换。这将有效

is.na(df[sapply(df, is.numeric)]) <- df[sapply(df, is.numeric)] < 20

也适用于您的示例。

警告: 小于运算符<用于比较字符,但它们对<返回FALSE

"t" < 20
[1] FALSE
"t" < 2000000000000
[1] FALSE 

>

为TRUE
"t" > 2000000000000
[1] TRUE