根据由另一列组织的一个列合并多个df

时间:2019-12-12 22:20:12

标签: r dataframe merge

我正在努力实现以下目标:几年来我有几个数据框。

df1
Name   Ch1   Val1   Val2   ..
A       a     x1     x2
B       a     x3     x4
...
df2
Name   Ch1   Val1   Val2   ..
A       b     x5     x6
B       b     x7     x8
...
df3
Name   Ch1   Val1   Val2   ..
A       c     x9     x10
C       c     x11    x12
...

虽然a,b,c是年,所以可以说2002、2003、2004。

现在,我想合并这些数据框,以便像以下所示列出所有年份(即Name)的每个Ch1值:

df_final
Name   Ch1   Val1   Val2   ..
A       a     x1     x2
        b     x5     x6
        c     x9     x10
B       a     x3     x4
        b     x6     x7
C       c     x11    x12
...

问题还在于,“名称”的值在所有3个数据帧(例如C)中并不总是相同。

1 个答案:

答案 0 :(得分:3)

使用dplyr

library(dplyr)

bind_rows(df1,df2,df3) %>% 
  arrange(Name, Ch1) %>% 
  mutate(Name = replace(Name, duplicated(Name), ""))

#>   Name Ch1 Val1 Val2
#> 1    A   a   x1   x2
#> 2        b   x5   x6
#> 3        c   x9  x10
#> 4    B   a   x3   x4
#> 5        b   x7   x8
#> 6    C   c  x11  x12

数据:

df1 <- read.table(text="
Name   Ch1   Val1   Val2  
A       a     x1     x2
B       a     x3     x4", header=T, stringsAsFactor=F)

df2 <- read.table(text="
Name   Ch1   Val1   Val2
A       b     x5     x6
B       b     x7     x8", header=T, stringsAsFactor=F)

df3 <- read.table(text="
Name   Ch1   Val1   Val2
A       c     x9     x10
C       c     x11    x12", header=T, stringsAsFactor=F)