我有两个不同信息的数据帧(只有一列在两个数据帧中是相同的:subject
)。而且,其中一个数据帧比另一个数据帧长(更多的列和更多的行)。
所以,我有这样的东西:
# drataframe 1
subject var1 var2
101 A B
102 C D
103 E F
...
# dataframe 2
subject varW varX varY varZ
101 1 2 1 4
101 2 1 1 4
101 4 1 1 4
102 2 1 2 5
102 1 1 2 5
102 2 4 2 5
103 2 3 3 1
103 1 2 3 1
103 4 1 3 1
注意,每个主题在dataframe 2中重复多次,而在dataframe 1中,每个主题只出现一次。
我想要做的是将列varY
和varZ
附加到DataFrame1。
我尝试使用select
(选择这两列),然后使用inner_join
(连接两个数据帧)。但是,每个主题有3行,因为每个主题在dataframe 2中重复3次。一旦连接,我希望dataframe 1中的每个主题只有1行,因为每个主题在varY
和varZ
中只有一个值。
换句话说,这将是我想要的输出:
subject var1 var2 varY varZ
101 A B 1 4
102 C D 2 5
103 E F 3 1
发布于 2021-04-21 08:36:05
使用library(data.table)
df1[df2[, .SD[1], .SDcols=c("varY", "varZ"), by=subject], on="subject"]
或者(来自@thelatemail的ty评论),
df2[, .(subject, varY, varZ)][df1, on=.(subject), mult="first"]
数据:
df1 = fread("
subject var1 var2
101 A B
102 C D
103 E F
")
df2 = fread("
subject varW varX varY varZ
101 1 2 1 4
101 2 1 1 4
101 4 1 1 4
102 2 1 2 5
102 1 1 2 5
102 2 4 2 5
103 2 3 3 1
103 1 2 3 1
103 4 1 3 1
")
https://stackoverflow.com/questions/67187846
复制相似问题