gpt4 book ai didi

r - 使用共享列和不同行合并 R 中的数据帧

转载 作者:行者123 更新时间:2023-12-01 22:55:59 24 4
gpt4 key购买 nike

我在这里尝试使用合并功能,但我很困惑。我很抱歉,因为这看起来很基本,但是 by.x 和 by.y 函数让我很困惑。我想提取数据框 A 和数据框 B 之间的共享列,然后将两个数据框合并在一起。数据框不共享任何分类单元(第一列),但它们将共享 X1 - X10000 等列的一部分。这些数据框中的每一个都有约 8,000 列和几百行。在此示例中,变量 X2 和 X5 是共享的,但其他变量 X1 和 X3 未共享。基于相交的列名称向量,我知道数据帧共享约 3000 列。

数据框 A:

 Taxa   X1      X2      X5
118 T N A
113 N N A
60 C Y G
121 N N N

数据框 B:

 Taxa  X2      X3      X5
200 C G N
119 T N G
30 C G G
21 C N N

所需的合并数据框:

 Taxa    X2      X5
118 N A
113 N A
60 Y G
121 N N
200 C N
119 T G
30 C G
21 C N

当我尝试以各种方式使用合并功能时,我得到了这个(这里有我的实​​际列号):

      Taxa      X408050  X995019   
NA <NA> <NA> <NA>
NA.1 <NA> <NA> <NA>
NA.2 <NA> <NA> <NA>
NA.3 <NA> <NA> <NA>
NA.4 <NA> <NA> <NA>
NA.5 <NA> <NA> <NA>
NA.6 <NA> <NA> <NA>

最佳答案

采纳 PierreLafortune 的建议,我将留下我的建议作为答案。既然你说你在两个数据框中都有 8000 列,你想找出两者之间哪些列名是共同的。为了找到共同的列,您可以使用intersect()。一旦有了必要的列名,就可以对数据框进行子集化。然后,您可以合并这两个数据框。

ind <- intersect(names(mydf), names(mydf2))

rbind(mydf[, ind], mydf2[, ind])

# Taxa X2 X5
#1 118 N A
#2 113 N A
#3 60 Y G
#4 121 N N
#5 200 C N
#6 119 T G
#7 30 C G
#8 21 C N

数据

mydf <- structure(list(Taxa = c(118L, 113L, 60L, 121L), X1 = c("T", "N", 
"C", "N"), X2 = c("N", "N", "Y", "N"), X5 = c("A", "A", "G",
"N")), .Names = c("Taxa", "X1", "X2", "X5"), class = "data.frame", row.names = c(NA,
-4L))

mydf2 <- structure(list(Taxa = c(200L, 119L, 30L, 21L), X2 = c("C", "T",
"C", "C"), X3 = c("G", "N", "G", "N"), X5 = c("N", "G", "G",
"N")), .Names = c("Taxa", "X2", "X3", "X5"), class = "data.frame", row.names = c(NA,
-4L))

关于r - 使用共享列和不同行合并 R 中的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34803155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com