首页 > 解决方案 > 将具有重复值对的 2 行合并为一行

问题描述

我有下面的数据框,其中有 2 行具有相同的列值对AB-3RD 和 4RTH 具有 2 3 -,-7TH 和 8TH 具有 4 6-。

master <- data.frame(A=c(1,1,2,2,3,3,4,4,5,5), B=c(1,2,3,3,4,5,6,6,7,8),C=c(5,2,5,7,7,5,7,9,7,8),D=c(1,2,5,3,7,5,9,6,7,0))



A B C D
1  1 1 5 1
2  1 2 2 2
3  2 3 5 5
4  2 3 7 3
5  3 4 7 7
6  3 5 5 5
7  4 6 7 9
8  4 6 9 6
9  5 7 7 7
10 5 8 8 0

我想通过添加管道将这些行合并为一个 | C和的值之间的运算符D。例如,第 2 行和第 3 行如下:

A B C  D
2 3 2|5 2|5

标签: r

解决方案


我认为在您的示例中,您的组合对偏离了一行,假设是这种情况,这就是您要寻找的。我们按要折叠重复项的列进行分组,然后使用summarize_allwithpaste0将值与分隔符组合起来。

library(tidyverse)

master %>% group_by(A,B) %>% summarize_all(funs(paste0(., collapse="|")))

      A     B C     D    
  <dbl> <dbl> <chr> <chr>
1     1     1 5     1    
2     1     2 2     2    
3     2     3 5|7   5|3  
4     3     4 7     7    
5     3     5 5     5    
6     4     6 7|9   9|6  
7     5     7 7     7    
8     5     8 8     0   

推荐阅读