【问题标题】:Finding duplicates in a dataframe and returning count of each duplicate record在数据框中查找重复项并返回每个重复记录的计数
【发布时间】:2018-12-14 04:18:07
【问题描述】:

我有一个类似的数据框

col1 col2 col3
A    B    C
A    B    C
A    B    B
A    B    B
A    B    C
B    C    A

我想得到以下格式的输出:

col1 col2 col3 Count
A    B    C    3 Duplicates
A    B    B    2 Duplicates

我不想使用函数中的任何特定列来查找重复项。

这就是不使用 dplyr 的 add_count 的原因。

使用重复会有

    col1 col2 col3 count
2   A    B    C    3
3   A    B    B    2
5   A    B    C    3

所以不是想要的输出。

【问题讨论】:

标签: r


【解决方案1】:

我们可以使用group_by_all按所有列分组,然后通过选择计数> 1的行来删除不重复的列。

library(dplyr)

df %>%
  group_by_all() %>%
  count() %>%
  filter(n > 1)

#  col1  col2  col3      n
# <fct> <fct> <fct>   <int>
#1 A     B     B         2
#2 A     B     C         3

【讨论】:

  • 感谢@RonakShah..akrun 也提供了正确答案。对我来说,您的答案更容易理解,因此标记为答案。
【解决方案2】:

我们可以使用data.table

library(data.table)
setDT(df1)[, .(n =.N), names(df1)][n > 1]
#   col1 col2 col3 n
#1:    A    B    C 3
#2:    A    B    B 2

或base R

subset(aggregate(n ~ ., transform(df1, n = 1), FUN = sum), n > 1)
#  col1 col2 col3 n
#2    A    B    B 2
#3    A    B    C 3

【讨论】:

  • 非常感谢@akrun,我看到你回答了许多与 R 相关的问题。我检查了一下,它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多