R - 使用一个不同的列合并两个数据帧

时间:2014-11-18 19:26:51

标签: r dataframe rbind

假设我有两个数据框

df1 = data.frame(id = c(1,1,1), stat = c("B", "A", "C"), value = c(10,11,12))
df2 = data.frame(id = c(2,2,2), stat = c("B", "A", "C"), value = c(20,21, 22))

基本上第一列标识数据框,第二列是我想要跟踪的一些统计信息,最后一列是该统计信息的值。我可以轻松合并数据框,以便我得到

stat  id    value
B     1     10
B     2     20    
A     1     11
A     2     21
C     1     12
C     2     22

我想保留统计栏的顺序,即使它不是按字母顺序排列

1 个答案:

答案 0 :(得分:2)

你可以做到

(r <- rbind(df1, df2))[c(2,1,3)][order(r$stat, decreasing = TRUE),]
#   stat id value
# 1    B  1    10
# 3    B  2    20
# 2    A  1    11
# 4    A  2    21

在回答编辑过的问题时,您可以使用

f <- function(i) rbind(df1[i,], df2[i,])
do.call(rbind, lapply(1:nrow(df1), f))[c(2,1,3)]
#    stat id value
# 1     B  1    10
# 2     B  2    20
# 22    A  1    11
# 21    A  2    21
# 3     C  1    12
# 31    C  2    22