2014-12-07 106 views
2

我有一個data.table 47個變量看5007分博士生的結果,看起來像這樣引用刪除行的列值data.table [R

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

我假設你正在學習data.table。因此,一個data.table的方式是

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

由於'1.9.4',data.table使用二級鍵自動索引列以使用二進制搜索快速子集。這是一項新功能。並且目前針對'DT [x == ...]'和DT [X%in%...]'執行。 – Arun 2014-12-07 10:15:08

3

你可以嘗試

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