查看数据框如下:
set.seed(3)
Data1<-rnorm(20, mean=20)
Dir_1<-rnorm(20,mean=2)
Data2<-rnorm(20, mean=21)
Dir_2<-rnorm(20,mean=2)
Data3<-rnorm(20, mean=22)
Dir_3<-rnorm(20,mean=2)
Data4<-rnorm(20, mean=19)
Dir_4<-rnorm(20,mean=2)
Data5<-rnorm(20, mean=20)
Dir_5<-rnorm(20,mean=2)
Data6<-rnorm(20, mean=23)
Dir_6<-rnorm(20,mean=2)
Data7<-rnorm(20, mean=21)
Dir_7<-rnorm(20,mean=2)
Data8<-rnorm(20, mean=25)
Dir_8<-rnorm(20,mean=2)
Index<-rnorm(20,mean=5)
DF<-data.frame(Data1,Dir_1,Data2,Dir_2,Data3,Dir_3,Data4,Dir_4,Data5,Dir_5,Data6,Dir_6,Data7,Dir_7,Data8,Dir_8,Index)
我最终得到的数据框每次观察有两列数据(基于观察1-8)和索引。基于此索引,我想删除(或使NA)某些数据观察。
举个例子:
如果索引大于5,则在该行中删除观察8(数据和目录)
如果索引大于4,则删除该行中的观察值7和8
如果索引大于3且小于3.5,则在该行中删除6,7,8
我希望能够提出一系列“if”语句,让我根据索引值为每行删除列。
答案 0 :(得分:1)
假设你想要的不是“删除一行的列”,而是将NAs放入特定行的正确列中,你需要使用一些索引向量而不是一系列if
语句:< / p>
DF[DF$Index>3 & DF$Index<3.5, (6*2-1):(8*2)] <- NA
DF[DF$Index>4, (7*2-1):(8*2)] <- NA
DF[DF$Index>5, (8*2-1):(8*2)] <- NA