我有一个关于在R中索引和编辑数据结构的问题。例如,假设我有一个数据框myDF
:
myDF=data.frame(a=rep(c(1,2),10), b=rep(0,20), c=rep(0,20), d=rep(0,20))
我知道我可以使用列a
来索引其他列并对其进行编辑,如下所示:
myDF$b[myDF$a==1]=3
我知道我可以使用sample()
从列中随机获取5个单元格并按照以下方式编辑它们:
myDF$c[sample(1:20,5)]=6
但是,为了编辑目的,如何从基于另一列选择的那些中随机选择特定数量的单元格?例如。如果我想将d
中的5个随机单元格的值设置为4,并且约束所有这些单元格也来自a==1
的行?
答案 0 :(得分:1)
您可以合并sample
和子集,如:
myDF$d[sample(which(myDF$a==1),5)]<-4
which
选择符合条件的行,然后sample
只选择其中的五行,然后更新这些行d值。