确定R中数据集中缺失的观测值(非NAs)
我有一个相当大的数据集,总共有近6000次观测。我得到了另一个缺少观测值的数据集。如果未进行测量,则不使用NA填充行/观察值,而是省略整个行/观察值。第二个数据集有5500行 我需要确定哪些观察没有被记录,或者换句话说,第二个数据集中缺少哪些行。我指的不是NAs或缺少的值,而是没有进入数据集的观察结果 在我下面的例子中,每个观察(ID)也应该有“组”记录11,12,13,14,21,22,23,24。但是,ID 206902只有组11,12,14,21,22,23,24。它缺少13 在本例中,ID不是唯一的,因此应该有8个ID。 例如,ID 206901和组11;ID 206901和组12等 如何轻松确定缺少哪些观察(ID)?同样,每个ID应该有8条记录确定R中数据集中缺失的观测值(非NAs),r,select,filter,data.table,R,Select,Filter,Data.table,我有一个相当大的数据集,总共有近6000次观测。我得到了另一个缺少观测值的数据集。如果未进行测量,则不使用NA填充行/观察值,而是省略整个行/观察值。第二个数据集有5500行 我需要确定哪些观察没有被记录,或者换句话说,第二个数据集中缺少哪些行。我指的不是NAs或缺少的值,而是没有进入数据集的观察结果 在我下面的例子中,每个观察(ID)也应该有“组”记录11,12,13,14,21,22,23,24。但是,ID 206902只有组11,12,14,21,22,23,24。它缺少13 在本例中,I
example <- structure(list(ID = c(206901L, 206901L, 206901L, 206901L, 206901L,
206901L, 206901L, 206901L, 206902L, 206902L, 206902L, 206902L,
206902L, 206902L, 206902L), group = c(11L, 12L, 13L, 14L, 21L,
22L, 23L, 24L, 11L, 12L, 14L, 21L, 22L, 23L, 24L)), .Names = c("ID",
"group"), sorted = "ID", class = c("tbl_dt", "tbl", "data.table",
"data.frame"), row.names = c(NA, -15L), .internal.selfref = <pointer: 0x0000000000100788>)
example我们并不清楚预期的输出是什么,但是如果我们需要在所有唯一的“组”中列出特定ID中缺少的所有“组”,那么我们可以使用%
中的%和!
获得按“ID”分组的缺少的“组”的逻辑索引,并返回缺少的“组”通过使用逻辑索引“i1”如果存在任何缺失组或else
返回“NA”
Un <- unique(example[["group"]])
example[, {i1 <- !Un %in% group
list(NotFound = if(any(i1)) Un[i1] else NA_integer_)
}, ID]
# ID NotFound
#1: 206901 NA
#2: 206902 13
example[, CJ(ID=ID, group=group, unique=TRUE)
][!example, on = c("ID", "group")]