Mam danych w tabeli R, który ma kilka identyfikatorów i wartość. Dla każdej kombinacji identyfikatorów istnieje kilka wierszy. Jeśli jeden z tych wierszy zawiera NA w kolumnie "wartość", chciałbym usunąć wszystkie wiersze z tą kombinacją identyfikatorów. Na przykład w poniższej tabeli chciałbym usunąć wszystkie wiersze, dla których id1 == 2
i id2 == 1
.Usuń wiersze z data.table w R na podstawie wartości kilku kolumn
Gdybym miał tylko jeden identyfikator, zrobiłbym dat[!(id1 %in% dat[is.na(value),id1])]
. W przykładzie usunąłoby to wszystkie wiersze, gdzie i1 == 2. Jednak nie udało mi się dołączyć kilku kolumn.
dat <- data.table(id1 = c(1,1,2,2,2,2),
id2 = c(1,2,1,2,3,1),
value = c(5,3,NA,6,7,3))
spróbować też DAT [! (ID1 == 2 i ID2 == 1)] 'lub 'setkey (DAT ID1, ID2) [! J (2, 1)] ' – akrun
Wiem, że działałoby to na prostym przykładzie powyżej. Jednak pytanie ma być bardziej ogólne, ponieważ może istnieć duża liczba wierszy z NA. – lilaf
Myślę, że szuka 'dat [, if (all (! Is.na (value))) .SD,. (Id1, id2)]' –