我正在努力实现以下目标:几年来我有几个数据框。
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)中并不总是相同。
答案 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)