我知道这个问题已经被问过千遍了,但是答案对我不起作用。
我的数据集很大,需要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。
答案 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