繁体   English   中英

R 比较跨数据帧的多个值

[英]R comparing multiple values across dataframes

我有一个 dataframe (X) 看起来像

ID1  ID2
1     2
2     3
3     4

另一个(Y)看起来像

ID  GROUP
1    5
2    5     
3    6
4    6

我正在尝试比较和计算 dataframe X 中位于同一行的 ID,它们是否在 dataframe Y 中列出的同一组中?

例如:

ID1  ID2  SAME.GROUP
1     2    YES
2     3    NO
3     4    YES

我在匹配一列之前已经完成了此操作,但无法弄清楚如何同时执行这两个操作。 提前致谢

您可以使用match

transform(X, SAME.GROUP = Y$GROUP[match(X$ID1, Y$ID)] == Y$GROUP[match(X$ID2, Y$ID)])
  ID1 ID2 SAME.GROUP
1   1   2       TRUE
2   2   3      FALSE
3   3   4       TRUE

数据

X <- read.table(header = T, text = "ID1  ID2
1     2
2     3
3     4")


Y <- read.table(header = T, text = "ID  GROUP
1    5
2    5     
3    6
4    6
")

我们可以使用连接

library(data.table)
setDT(X)[dcast(setDT(Y), GROUP ~ paste0("ID", rowid(GROUP)),
     value.var = "ID"), SAME.GROUP := "YES", on = .(ID1, ID2)]
X[is.na(SAME.GROUP), SAME.GROUP := "NO"]

-输出

> X
     ID1   ID2 SAME.GROUP
   <int> <int>     <char>
1:     1     2        YES
2:     2     3         NO
3:     3     4        YES

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM