我有一个数据表格(data.table)在R中,其中包含多个ID和一个值。对于每个ID组合,都有几行数据。如果这些行中的任何一行在“value”列中包含NA,则我想删除所有具有此ID组合的行。例如,在下面的表中,我想删除所有满足
如果我只有一个ID,我会执行
id1 == 2
和id2 == 1
的行。如果我只有一个ID,我会执行
dat[!(id1 %in% dat[is.na(value),id1])]
。在示例中,这将删除所有i1 == 2的行。但是,我无法包括多个列。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))
dat[!(id1==2 & id2==1)]
或者setkey(dat, id1, id2)[!J(2,1) ]
。 - akrundat[, if(all(!is.na(value))) .SD, .(id1, id2)]
。 - David ArenburgNA
的那部分。 我的评论是基于“我想删除所有id1 == 2且id2 == 1的行。” - akrun