基于索引列删除数据框中的数据

时间:2013-03-20 21:47:30

标签: r if-statement

查看数据框如下:

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”语句,让我根据索引值为每行删除列。

1 个答案:

答案 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