我的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)
我们可以尝试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作为对象名称,因为它更容易输入。