合并两个数据帧以按顺序获取每个数据帧的备用行

A.M*_*G16 6 merge r

我的data.frame DATA是

  k    l   g
1 A 2004  12
2 B 2004 3.4
3 C 2004 4.5
Run Code Online (Sandbox Code Playgroud)

另一个data.frame DATA2是

  i    d   t
1 A 2012  22
2 B 2012 4.8
3 C 2012 5.6
Run Code Online (Sandbox Code Playgroud)

我想得到

1 A 2004  12
1 A 2012  22
2 B 2004 3.4
2 B 2012 4.8
3 C 2004 4.5
3 C 2012 5.6
Run Code Online (Sandbox Code Playgroud)

akr*_*run 6

我们可以尝试rbindlist从data.table. 将数据集的list,rbind他们rbindlist和order第一列。

library(data.table)
rbindlist(list(df1, df2))[order(k)]
#   k    l    g
#1: A 2004 12.0
#2: A 2012 22.0
#3: B 2004  3.4
#4: B 2012  4.8
#5: C 2004  4.5
#6: C 2012  5.6
Run Code Online (Sandbox Code Playgroud)

或使用 dplyr

library(dplyr)
bind_rows(df1, setNames(df2, names(df1))) %>% 
           arrange(k)
Run Code Online (Sandbox Code Playgroud)

注意:我使用df1anddf2代替DATAandDATA2作为对象名称,因为它更容易输入。