【发布时间】:2020-04-22 04:21:26
【问题描述】:
我必须对两个独立评分者的评分进行数据帧。在 x 列中,对具有特定参考 ID (Ref.ID) 的论文的发表年份进行了编码。对于某些论文,对多个样本进行了编码。该信息反映在变量“Sample.ID”中(例如,在 df1 中,三个样本编码为 Ref.ID“C”)。参考 ID 和样品 ID 的组合在变量“Ref.Sample.ID”中表示。我想知道哪个 Ref.Sample.ID 的变量 x 的编码在 df1 和 df2 之间不同。请注意,df2 比 df1 少一行,因为 df2 中的评估者只为 Ref.ID“C”编码了两个样本,而 df1 中的评估者编码了三个样本。
我正在尝试找到一个可以暴露 df1 和 df2 之间不匹配的 R 代码。出现不匹配的原因可能是每个 Ref.ID 编码的行数不同,或者是因为同一 Ref.Sample.ID 的 df1 和 df2 之间的 x 不同。
有谁知道如何做到最好?我为每一个提示感到高兴:)
df1 <- read.table(text="
Ref.ID Sample.ID Ref.Sample.ID x y
A 1 A-1 2000 a
B 1 B-1 1992 a
C 1 C-1 2018 b
C 2 C-2 2018 b
C 3 C-3 2018 b
D 1 D-1 2011 c
D 1 D-1 2011 c
E 1 E-1 1990 a
F 1 F-1 1990 c
G 1 G-1 2015 d
G 2 G-2 2015 d
G 3 G-3 2015 d", header=TRUE)
# Note df2 has one row less than df1!
df2 <- read.table(text="
Ref.ID Sample.ID Ref.Sample.ID x y
A 1 A-1 2000 a
B 1 B-1 1992 a
C 1 C-1 2018 b
C 2 C-2 2018 b
D 1 D-1 2011 a
D 2 D-2 2011 a
E 1 E-1 1991 a
F 1 F-1 1990 d
G 1 G-1 2011 d
G 2 G-2 2011 d
G 3 G-3 2011 c", header=TRUE)
最终结果应该是 Ref.Sample.ID 的不同向量,其中 df1 和 df2 在 x 或 y 上存在差异。
例如 对于 x: “C-3”“E-1”“G-1”“G-2”“G-3”“D-2”
对于 y: “C-3”“D-1”“F-1”“G-3”“D-2”
【问题讨论】:
-
我想我需要两件事。首先,我需要这样的检查:IF df1$ref.sample.id == df2$ref.sample.id, THEN df1$x == df2$x。如果这是 FALSE,那么我想查看它为 false 的 ref.sample.id。其次,我需要检查 df1 和 df2 中每个 ref.id 是否编码了相同数量的行。如果不是这种情况,我想查看不是这种情况的 ref.id。
-
是的,我认为可以。
-
尝试类似:
unique(bind_rows(anti_join(df1, df2), anti_join(df2, df1))[["Ref.Sample.ID"]])... 需要library(dplyr) -
酷,它起作用了 :) 但是,如果我还有另一个变量 y 我也想检查它的评级怎么办。同样,我想查看 Ref.Sample.ID 的向量,但我也想知道“不匹配”是在 x 列还是 y 列上。有没有优雅的方法来做到这一点?
-
当然,我更新了我原来的帖子!