[英]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.