R-使用一个不同的列合并两个数据帧
假设我有两个数据帧R-使用一个不同的列合并两个数据帧,r,dataframe,rbind,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
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
我想保留stat列的顺序,即使它不是按字母顺序排列的
(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
(r谢谢。这很有效。不过我使用A和B是有误导性的,因为我的意思是不能按字母或数字顺序排列。只是统计列是按特定方式排列的,我想保持这种方式。我将编辑我的问题以澄清这一点。
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