我有两个显示月份的数据框和每行中的ID列表。它们看起来像这样:
数据框A:
Month ID
2016-03 1,2,3
2016-04 4,5,6
2016-05 7,8,9
数据框B:
Month ID
2016-03 2,3,4
2016-04 5,6,7
2016-05 8,9,10
看起来很简单,也许我正在过度思考它,但是我无法从数据帧A中减去数据帧B中的相应行。
最终目标是在删除数据帧B后从数据帧A获取每行ID数。
结果数据框如下所示:
Month ID
2016-03 1
2016-04 4
2016-05 7
我的计数是1, 1, 1
。
提前感谢您的帮助!
“ID”列中的值是列表对象,如:
c("1", "2", "3")
答案 0 :(得分:2)
每个setdiff
都有适当的向量后使用Month
:
result <- Map(setdiff, A$ID, B$ID[match(A$Month,B$Month)] ))
#[[1]]
#[1] 1
#
#[[2]]
#[1] 4
#
#[[3]]
#[1] 7
如果您需要长度,您可以轻松完成:
lengths(result)
#[1] 1 1 1
其中,使用的数据是:
A <- structure(list(Month = c("2016-03", "2016-04", "2016-05"), ID = list(
c(1, 2, 3), c(4, 5, 6), c(7, 8, 9))), .Names = c("Month",
"ID"), row.names = c(NA, -3L), class = "data.frame")
B <- structure(list(Month = c("2016-03", "2016-04", "2016-05"), ID = list(
c(2, 3, 4), c(5, 6, 7), c(8, 9, 10))), .Names = c("Month",
"ID"), row.names = c(NA, -3L), class = "data.frame")