首页 > 解决方案 > 如何在r中获取数据框中重复值的下一个元素?

问题描述

我想删除 A 列中的重复元素,我需要合并新列中重复值的相关元素我有这个数据框:

A   B   Repeat
a   x1  5
a   x5  5
a   x4  5
a   x2  5
a   x3  5
b   x2  3
b   x4  3
b   x1  3
c   x5  3
c   x9  3
c   x3  3
d   x2  2
d   x8  2
e   x5  2
e   x1  2
f   x6  1
g   x2  1
h   x5  1
i   x4  1
j   x7  1

这是我预期的数据框:

A   Repeat  Merged values of B
a   5   x1,x5,x4,x2,x3
b   3   x2,x4,x1
c   3   x5,x9,x3
d   2   x2,x8
e   2   x5,x1
f   1   x6
g   1   x2
h   1   x5
i   1   x4
j   1   x7

标签: rdataframemergeduplicates

解决方案


使用dplyr,我们可以group_by A创建一个逗号分隔的值来B使用toString和获取 的firstRepeat

library(dplyr)

df %>% 
  group_by(A) %>%
  summarise(new_B = toString(B),
            Repeat = first(Repeat))


# A tibble: 10 x 3
#    A     new_B              Repeat
#   <fct> <chr>               <int>
# 1 a     x1, x5, x4, x2, x3      5
# 2 b     x2, x4, x1              3
# 3 c     x5, x9, x3              3
# 4 d     x2, x8                  2
# 5 e     x5, x1                  2
# 6 f     x6                      1
# 7 g     x2                      1
# 8 h     x5                      1
# 9 i     x4                      1
#10 j     x7                      1

推荐阅读