通过在 R 中导入选定列的公共列组合 dfs [英] Combine dfs by common column importing selected columns in R

查看:16
本文介绍了通过在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆