r - 在 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,而是在前两个位置放了两个零。
解决方案
替换的语法格式错误。请参阅?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
推荐阅读
- r - 如何使用其他人的条件语句在数据框中添加具有相似名称的新变量?
- excel - 硬编码范围有效,但使用命名范围失败 - Excel VBA
- javascript - 有没有办法改进此代码以避免大型数组超时?
- reactjs - 如何在 React.js 中将两个单词写为单个字符串(例如:-课程名称)以呈现文件>
- c# - 循环遍历数据表获取值
- html - PrimeNG的fieldset css与网站原版不一样
- mysql - mysqldump转gzip,如何设置压缩文件的扩展名
- kubernetes - 问:如何设置 Kubernetes 集群以更好地平衡 CPU 负载?
- javascript - 使用 JavaScript 将多个文本框值传递给不同的视图
- java - 没有为实际参数“int”找到适用的构造函数/方法,但匹配的候选者确实存在