首页 > 解决方案 > 在 R 中查找和替换某些值

问题描述

我知道这已经被问过一千次了,但答案对我不起作用。

我有一个大数据集,需要 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

它没有用 1 替换 6,而是在前两个位置放了两个零。

标签: rreplacedplyr

解决方案


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

这段代码将比使用 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

推荐阅读