繁体   English   中英

两个 dataframe 列之间的联合

[英]Union between two dataframe columns

我有两个数据框:

df1 有这些列:participantid, formid, c1, c2, c3, c4

df2 具有以下列:participantid、c5、c6、c7、c8

我想要来自第一个数据框的所有 participantids 的联合,其中 formid = 'some value' 和来自第二个 dataframe 的所有 participantids。我只对 participantids 列表感兴趣。 我对其他任何列都不感兴趣:c1、c2、c3、c4、...

我试过了:

union(df1[df1$formid == "some value", "participantid"], df2["participantid"])
union(df1[df1$formid == "some value", "participantid"], df2[["participantid"]])
union(df1[df1$formid == "some value", "participantid"], df2$participantid)

都没有用。

任何指针?

先感谢您!

编辑:我尝试了以下代码并且它有效:

df1 <- data.frame(participantid = c("A1", "A2", "A3", "A4"),
                 formid = c("F1","F1","F1","F2"),
                 c1 = c(0,0,0,0))

df2 <- data.frame(participantid = c("B1", "B2", "B3", "B4"),
                  c2 = c(0,0,0,0))

union(df1[df1$formid == "F1", "participantid"], df2$participantid)

当我运行class(df2$participantid)class(df1[df1$formid == "F1", "participantid"])时,它返回[1] "factor"

我的真实数据来自 CSV 个文件,当我在这个真实数据class(df1[df1$formid == "F1", "participantid"])它返回[1] "tbl_df" "tbl" "data.frame"当我运行class(df2$participantid)时,它返回[1] "character" 大家知道这是为什么吗?

编辑#2:我能够使用虚拟 CSV 文件重现我的困境:

df1 CSV 文件:

participantid,formid,c1
A1,F1,0
A2,F1,0
A3,F1,0
A4,F2,0

df2 CSV 文件:

participantid,c2
B1,0
B2,0
B3,0
B4,0

当我运行上面的 union 命令时,我得到了这个:

[[1]]
[1] "A1" "A2" "A3"

[[2]]
[1] "B1"

[[3]]
[1] "B2"

[[4]]
[1] "B3"

[[5]]
[1] "B4"

length() 为 5,而它的长度本应为 7。这有意义吗?

我期待 output 要么

"A1" "A2" "A3" "B1" "B2" "B3" "B4"

要么

"A1" 
"A2" 
"A3" 
"B1" 
"B2" 
"B3" 
"B4"

编辑#3:我要回答我自己的问题。 这最终对我有用:

union(df1[df1$formid == "F1",]$participantid, df2$participantid)
union(unique(df1[df1$formid == "some value", 'participantid']), unique(df2$participantid))

我使用unique因为我猜你不需要重复的值。

暂无
暂无

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

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