Sam*_*Sam 94 merge r dataframe
我知道我可以使用它plyr
和它的朋友组合数据帧,merge
但是到目前为止我不知道如何根据2列合并两个数据帧和多列?
jor*_*ran 126
请参阅以下文档?merge
:
By default the data frames are merged on the columns with names they both have,
but separate specifications of the columns can be given by by.x and by.y.
Run Code Online (Sandbox Code Playgroud)
这显然意味着merge
将基于多个列合并数据帧.从文档中给出的最后一个例子:
x <- data.frame(k1=c(NA,NA,3,4,5), k2=c(1,NA,NA,4,5), data=1:5)
y <- data.frame(k1=c(NA,2,NA,4,5), k2=c(NA,NA,3,4,5), data=1:5)
merge(x, y, by=c("k1","k2")) # NA's match
Run Code Online (Sandbox Code Playgroud)
此示例旨在演示使用incomparables
,但它也说明了使用多列进行合并.您还可以在每个指定单独的列x
,并y
使用by.x
和by.y
.
Hyu*_*Lee 49
希望这可以帮助;
df1 = data.frame(CustomerId=c(1:10),
Hobby = c(rep("sing", 4), rep("pingpong", 3), rep("hiking", 3)),
Product=c(rep("Toaster",3),rep("Phone", 2), rep("Radio",3), rep("Stereo", 2)))
df2 = data.frame(CustomerId=c(2,4,6, 8, 10),State=c(rep("Alabama",2),rep("Ohio",1), rep("Cal", 2)),
like=c("sing", 'hiking', "pingpong", 'hiking', "sing"))
df3 = merge(df1, df2, by.x=c("CustomerId", "Hobby"), by.y=c("CustomerId", "like"))
Run Code Online (Sandbox Code Playgroud)
假设df1$Hobby
并且df2$like
意味着同样的事情.
小智 13
您还可以使用连接命令 (dplyr)。
例如:
new_dataset <- dataset1 %>% right_join(dataset2, by=c("column1","column2"))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
233726 次 |
最近记录: |