我有一个数据集,其中包含两列的值列表,我希望能够对每一行的列表进行相互比较.例如,我有3个小组,其中预期的数字是一定的,而观察到的是其他数字.我想将观察到的列与预期的列进行比较,看看哪些数字是预期的,但没有观察到.
Group | Expected | Observed |
---|---|---|
A | 4:8 | c(4, 5, 7) |
B | 7:12 | c(7, 8, 9, 10, 12) |
C | 6:10 | c(6, 8, 10) |
我需要一个名为Missing的额外列,它包含Expect中但未观察到的所有值.
Group | Expected | Observed | Missing |
---|---|---|---|
A | 4:8 | c(4, 5, 7) | c(6, 8) |
B | 7:12 | c(7, 8, 9, 10, 12) | 11 |
C | 6:11 | c(6, 8, 11) | c(7, 9, 10) |
我try 使用setdiff()和base R,因为它可以找到两个列表之间的不同值.但是,我不能让它以每行比较列表的方式工作.
df$Missing <- setdiff(df$Expected, df$Observed)
df$Missing <- df$Expected[!(df$Expected %in% df$Observed)]
这两个选项都会产生预期的完整列表.这是我得到的输出:
Group | Expected | Observed | Missing |
---|---|---|---|
A | 4:8 | c(4, 5, 7) | 4:8 |
B | 7:12 | c(7, 8, 9, 10, 12) | 7:12 |
C | 6:11 | c(6, 8, 11) | 6:11 |
有没有什么方法可以比较每个组的两个列表(观察值和期望值),这样我就可以看到每个组缺少哪些值?提前感谢您的帮助!