假设我有两个数据框
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
我想保留统计栏的顺序,即使它不是按字母顺序排列
答案 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