在R中寻找并替换某些值

时间:2019-10-27 12:51:54

标签: r replace dplyr

我知道这个问题已经被问过千遍了,但是答案对我不起作用。

我的数据集很大,需要R才能为我自动查找和替换某些列中的某些值。

我尝试过:

df$column <- replace (df$column, df$column, old number==new number)

对我来说看起来像这样:

df$qual_a_a_s1m1a <- replace(df$qual_a_a_s1m1a, df$qual_a_a_s1m1a, 2==3)

如果我可以使用它,则可以为所有列和所有值构建它。

您能解释一下为什么它不起作用吗? 谢谢,祝您有个愉快的星期天:)

编辑:这是我得到的结果之一:

replace(df$qual_a_a_s1m1a, df$qual_a_a_s1m1a, 6==1)

  [1]  0  0 NA  6 NA  0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA  2 NA
 [32] NA NA NA NA  1 NA NA NA NA NA NA NA NA  6 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [63] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [94] NA NA NA NA NA NA NA NA  6 NA NA NA NA NA NA

不是将6替换为1,而是在前两个位置放置两个0。

2 个答案:

答案 0 :(得分:0)

嗨,我认为您的语法格式错误。 df$qual_a_a_s1m1a <- replace(df$qual_a_a_s1m1a, df$qual_a_a_s1m1a=3, 2)

也许您也可以使用ifelse吗?不知道它是否更快,但这是我经常使用的东西。干杯

答案 1 :(得分:0)

替换的语法格式错误。 参见?replace 您的x是正确的,但该列表应该是要替换的行号的列表。然后,有效值将是您希望将列表中的行转换为的值的列表。

此代码比使用replace()更好:

# create fake data
df <- data.frame(qual_a_a_s1m1a=rep(1:3,times=3))
df

# let's change all the 2s to 3s
df$qual_a_a_s1m1a[df$qual_a_a_s1m1a==2] <- 3

df # all the 2s are now 3s