通过引用data.table r中的列值来删除行

时间:2014-12-07 03:37:26

标签: r data.table subset

我有一个data.table,有47个变量,可以查看5007个博士学生的成绩,看起来像这样

sample<-data.table(PHD_STUDENT_ID=c(101:120),STUDY_LOCATION=c("Sydney","Canberra","Sydney","Sydney", 
    "Malaysia", "Malaysia", "CLF", "DRR", "GHS", "HMS", "DRJD", "KLS", "Malaysia",
    "Singapore", "Melbourne", "RD3S", "South Africa", "RME", "Sydney", "Canberra"),
    GRADE=c(51:70))

所以data.table看起来像这样

PHD_STUDENT_ID      STUDY_LOCATION  GRADE
1   101             Sydney          51 
2   102             Canberra        52
3   103             Sydney          53
4   104             Sydney          54
5   105             Malaysia        55
6   106             Malaysia        56
7   107             CLF             57
8   108             DRR             58
.........

除了研究地点为“马来西亚”,“南非”或“新加坡”的行外,我需要保留所有行。基本上这些国家的校园里没有的所有价值观。我有数百个独特的值,其中研究地点只是实验室的代码,例如我希望保留的“CLF”和“DRR”,所以我不能只是澳大利亚城市的子集。

有关如何通过参考STUDY_LOCATION中的值来对此数据表进行子集的任何建议都不是“马来西亚”,“南非”或“新加坡”,我们将不胜感激。

2 个答案:

答案 0 :(得分:3)

你可以尝试

   sample[!STUDY_LOCATION %in% c('Malaysia', 'South Africa', 'Singapore')]

答案 1 :(得分:3)

我假设您正在学习data.table。因此,data.table方式是

setkey(sample, STUDY_LOCATION)
sample[!c('Malaysia', 'South Africa', 'Singapore')]