r - 合并两个数据框,同时保持原始行顺序

标签 r sorting dataframe merge

我想合并两个数据框,保持其中一个数据框的原始行顺序(下例中的df.2)。

以下是一些示例数据(class 列中的所有值均在两个数据框中定义):

df.1 <- data.frame(class = c(1, 2, 3), prob = c(0.5, 0.7, 0.3))
df.2 <- data.frame(object = c('A', 'B', 'D', 'F', 'C'), class = c(2, 1, 2, 3, 1))

如果我这样做:

merge(df.2, df.1)

输出是:

  class object prob
1     1      B  0.5
2     1      C  0.5
3     2      A  0.7
4     2      D  0.7
5     3      F  0.3

如果我添加sort = FALSE:

merge(df.2, df.1, sort = F)                                                        

结果是:

  class object prob
1     2      A  0.7
2     2      D  0.7
3     1      B  0.5
4     1      C  0.5
5     3      F  0.3

但我想要的是:

  class object prob
1     2      A  0.7
2     1      B  0.5
3     2      D  0.7
4     3      F  0.3    
5     1      C  0.5

最佳答案

您只需创建一个变量来给出 df.2 中的行号。然后,合并数据后,您可以根据此变量对新数据集进行排序。这是一个例子:

df.1<-data.frame(class=c(1,2,3), prob=c(0.5,0.7,0.3))
df.2<-data.frame(object=c('A','B','D','F','C'), class=c(2,1,2,3,1))
df.2$id  <- 1:nrow(df.2)
out  <- merge(df.2,df.1, by = "class")
out[order(out$id), ]

关于r - 合并两个数据框,同时保持原始行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17878048/

相关文章:

r - 如何根据请求 id 和先前的请求 id 订购 R 数据帧?

javascript - 按特定字母对 JS 字符串数组进行排序

javascript - ReactJS - 排序 - TypeError : 0 is read only

c - 我应该编写一个程序来对结构数组进行排序,但我不知道这样做

python - 如何从 Pandas 的数据框中提取单元格值

pandas - 将数字上限/阈值应用于 pandas 数据框

python - Pandas DataFrame 删除 groupby 中的行

r - 按组值的 SD 列的数据表字符串串联

r - 将字符添加到数据框列中每个元素的末尾

r - 如何在facet_grid中将右侧条切换到左侧