2014-01-28 4 views
7

Я пытаюсь удалить строки из моего data.table, где один из двух столбцов содержит значение NA. Я хотел бы использовать двоичный поиск с помощью функции J от data.table. Вот то, что я пробовал:Подмножество на основе двоичного поиска по значениям NA в data.table

DT = data.table(x=rep(c("a","b",NA),each=10), y=c(1,3,6)) 
setkey(DT,x) 
DT 
    x y 
1: NA 6 
2: NA 1 
3: NA 3 
4: NA 6 
5: NA 1 
6: NA 3 
7: NA 6 
8: NA 1 
9: NA 3 
10: NA 6 
11: a 1 
12: a 3 
13: a 6 
14: a 1 
15: a 3 
16: a 6 
17: a 1 
18: a 3 
19: a 6 
20: a 1 
21: b 3 
22: b 6 
23: b 1 
24: b 3 
25: b 6 
26: b 1 
27: b 3 
28: b 6 
29: b 1 
30: b 3 
    x y 

Чтобы удалить все строки, где x это NA я попробовал:

DT[!J(NA_character_)] 

... но она по-прежнему возвращает весь data table. Кто-нибудь имеет представление о том, что я делаю неправильно? Спасибо огромное!

+4

Это было реализовано в 'v1.8.11'. Пожалуйста, проверьте [** этот **] (http://stackoverflow.com/questions/12646172/select-na-in-a-data-table-in-r/20590133#20590133) для получения дополнительной информации. – Arun

ответ

3

В примере, как показано на рисунке, я хотел бы сделать это следующим образом:

DT <- DT[!is.na(x) & !is.na(y)] 

Не используйте функцию J() в соответствии с просьбой, но думал, что я разделю это в любом случае.

Смежные вопросы