如果值大于或小,则替换数据框中的值

时间:2014-05-23 16:01:23

标签: r

我在R中操纵数据框时遇到了问题。这是R中的基本内容,但我无法找到执行此类操作的最佳命令。

虚拟示例

Var1 20 300  39
Var2 49  23  91
Var3  0 239 210

如果值小于10,如何在第2列中使用10替换值;
或者,如果数据框中的所有值都大于100,那么如何将其替换为200

1 个答案:

答案 0 :(得分:6)

您可以使用apply替换整个data.frame中大于200的所有值。

apply(df, 2, function(x) ifelse(x > 200, 100, x))

注意:如果任何列不是数字,则所有列都将转换为字符或因子。为避免这种情况,您可以执行以下操作。如果您有一个data.frame df,其中包含两个数字列,即您要操作的第1列和第2列,以及您不想操作的两个非数字列,则可以执行以下操作:< / p>

df <- cbind(apply(df[,1:2], 2, function(x) ifelse(x > 200, 100, x)), df[,3:4])

@GregSnow评论后编辑:

在这种情况下使用lapply可能更有用。

df[] <- lapply(df, function(x) ifelse(x>200, 100, x))

对于之前不知道的人(包括我自己),使用df[]代替dfdf的结构保持原样(感谢@GregSnow有价值的信息)。