R에 여러 개의 ID와 값을 가진 data.table이 있습니다. ID의 각 조합에 대해 여러 행이 있습니다. 이 행 중 하나에 'value'열에 NA가 포함 된 경우이 ID 조합으로 모든 행을 제거하고 싶습니다. 예를 들어, 아래 표에서 id1 == 2
및 id2 == 1
인 모든 행을 제거하고 싶습니다.여러 열의 값을 기준으로 R에서 data.table의 행을 제거합니다.
내가 단 하나의 신원이 있다면 나는 dat[!(id1 %in% dat[is.na(value),id1])]
을 할 것입니다. 이 예에서는 i1 == 2 인 모든 행을 제거합니다. 그러나 여러 열을 포함 할 수 없었습니다. 당신이 값 중 하나가 NA
의 경우 id1
및 id2
의 조합에 따라 확인하고 그 전체 조합을 제거하려면
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)]' – akrun
위의 간단한 예제에서 이것이 작동한다는 것을 알고 있습니다. 그러나이 질문은 NA가있는 많은 수의 행이있을 수 있으므로 좀 더 일반적입니다. – lilaf
그가'dat [, if (모두 (! is.na (value))) .SD,. (id1, id2)] '를 찾고 있다고 생각합니다. –