I have a data.table in R which has several ids and a value. For each combination of ids, there are several rows. If one of these rows contains NA in the column 'value', I would like to remove all rows with this combination of ids. For example, in the table below, I would like to remove all rows for which id1 == 2 and id2 == 1.
If I had only one id I would do dat[!(id1 %in% dat[is.na(value),id1])]. In the example, this would remove all rows where i1 == 2. However, I did not manage to include several columns.
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)]orsetkey(dat, id1, id2)[!J(2,1) ]dat[, if(all(!is.na(value))) .SD, .(id1, id2)]NA. My comment was based onI would like to remove all rows for which id1 == 2 and id2 == 1.