通过在 R 中导入选定列的公共列组合 dfs [英] Combine dfs by common column importing selected columns in R
本文介绍了通过在 R 中导入选定列的公共列组合 dfs的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想通过常见的名称"合并 data.frames
列但只选择PA"列.
I would like to merge data.frames
by common "names" column but only selecting the "PA" columns.
df <- data.frame(names=c("Obs1", "Obs2", "Obs3", "Obs4", "Obs5"), `S1`=c(1,2,2,0,1), `S2`=c(2,50,40,30,22), `S3`=c( 0,100,135,256,303), `S4`=c(0,10,17,73,74),check.names=FALSE)
df2<- data.frame(names=c("Obs1", "Obs2", "Obs3", "Obs4", "Obs5"), AB=c(0,30,30,40,2), PA=c(2,4,5,6,7))
df3<- data.frame(names=c("Obs1", "Obs2", "Obs3", "Obs4", "Obs5"), AB=c(100,300,300,400,200), PA=c(3,5,7,8,7))
df4<- data.frame(names=c("Obs1", "Obs2", "Obs3", "Obs4", "Obs5"), AB=c(110,310,310,410,210), PA=c(30,50,70,80,70))
目前,这是导入所有列,但我只想选择导入PA"
At the moment, this is importing all the columns, but I would like to select only to import the "PA"
library(dplyr)
dff<- list(df,df2,df3, df4) %>%
Reduce(function(df,df2) left_join(df,df2,by="names"), .)
Curref dff:
Curref dff:
names S1 S2 S3 S4 AB.x PA.x AB.y PA.y AB PA
1 Obs1 1 2 0 0 0 2 100 3 110 30
2 Obs2 2 50 100 10 30 4 300 5 310 50
3 Obs3 2 40 135 17 30 5 300 7 310 70
4 Obs4 0 30 256 73 40 6 400 8 410 80
5 Obs5 1 22 303 74 2 7 200 7 210 70
期望:
names S1 S2 S3 S4 PA_df2 PA_df3 PA_df4
1 Obs1 1 2 0 0 2 3 30
2 Obs2 2 50 100 10 4 5 50
3 Obs3 2 40 135 17 5 7 70
4 Obs4 0 30 256 73 6 8 80
5 Obs5 1 22 303 74 7 7 70
推荐答案
使用 SQL 之类的连接,是否有效:
Using SQL like joins, does this work:
library(dplyr)
df %>% inner_join(df2 %>% select(names, 'PA_df2' = PA)) %>%
inner_join(df3 %>% select(names, 'PA_df3' = PA)) %>%
inner_join(df4 %>% select(names, 'PA_df4' = PA))
Joining, by = "names"
Joining, by = "names"
Joining, by = "names"
names S1 S2 S3 S4 PA_df2 PA_df3 PA_df4
1 Obs1 1 2 0 0 2 3 30
2 Obs2 2 50 100 10 4 5 50
3 Obs3 2 40 135 17 5 7 70
4 Obs4 0 30 256 73 6 8 80
5 Obs5 1 22 303 74 7 7 70
这篇关于通过在 R 中导入选定列的公共列组合 dfs的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文