我想更新 var3
的值在 R 数据框 mydata
根据一个简单的标准。
var1 var2 var3
1 1 4 5
2 3 58 800
3 8 232 8
我认为应该做以下事情:
mydata$var3[mydata$var3 > 500,] <- NA
但是,这会将每个匹配记录的整行替换为 NA(该行的所有单元格),而不仅仅是
var3
值(单元格): var1 var2 var3
1 1 4 5
2 NA NA NA
3 8 232 8
如何确保仅替换所选变量的值?
mydata
然后应该看起来像 var1 var2 var3
1 1 4 5
2 3 58 NA
3 8 232 8
最佳答案
使用 which
和 arr.ind=TRUE
> mydata[which(mydata[,3]>500, arr.ind=TRUE), 3] <- NA
> mydata
var1 var2 var3
1 1 4 5
2 3 58 NA
3 8 232 8
或者只是修改您之前的尝试...
mydata[mydata$var3 > 500, 3] <- NA
这也有效
mydata$var3[mydata$var3 > 500 ] <- NA # note no comma is inside [ ]
您的尝试没有成功,因为
mydata$var3
给出一个向量,你正在使用 [mydata$var3 > 500,]
索引它,就像它是一个矩阵一样所以会抛出尺寸错误。您几乎明白了,您所要做的就是删除代码中的逗号(请参阅我的最后一个选择)。
关于r - 更新 R data.frame 中的单个值(不是行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19713130/