【问题标题】:Is there any way to select some rows in data set whose for some columns they reapet more than once? [duplicate]有什么方法可以选择数据集中的某些行,它们对某些列重复多次? [复制]
【发布时间】:2019-11-11 02:11:34
【问题描述】:

我有一个包含 10000 行和 32 列的数据集。我想知道我们是否可以选择一些对某些特征具有相同值的行?

这是一个让我的问题更清楚的例子。

col1   col2   col3  col4  col5
1       2     3      4    5  
3       4     3      6    8
2       2     5      4    5
4       2     7      4    5
5       4    `8      6    8`
2       3     1      0    9
3       4     1      5    2

在这个数据集中有 5 列。假设我想在第 2,4 和 5 列中选择一些具有相同值的行。

可以看出,第一行、第三行和第四行在 col2 、 col4 和 col5 中具有相同的值,第二行和第 5 行在这些列中具有相同的值。所以我会选择这些行,新的数据集将是

 col1   col2   col3  col4  col5
  1       2     3      4    5  
  3       4     3      6    8
  2       2     5      4    5
  4       2     7      4    5
  5       4    `8      6    8`

【问题讨论】:

  • 发帖前应该先搜索一下。您应该查看 SO 接口提供的提名。我很惊讶有一个副本供您审查,因为这似乎是我见过的其他人的副本。如果您发现一个类似的问题,那么您应该链接到它并解释为什么您在应用它时遇到困难。
  • @42 老实说,我找不到任何东西。你能把我引到那个页面吗?
  • 当我没有找到类似的问题时,你的反对票是不公平的
  • @42 我什至不知道这叫重复数据
  • 正如我之前所说,如果您发现一个类似但不完全适用的问题(而且它可能不是您看到的第一个问题),那么您应该描述您为应用它所做的尝试并它是如何失败的。你不应该只看一个潜在的问题,而应该根据标题至少看两个或三个。

标签: r database


【解决方案1】:

我认为@42 提供的链接可以让您了解如何解决此问题。您需要选择列并从两端应用duplicated 来选择行。

cols <- c(2, 4, 5)
df[duplicated(df[cols]) | duplicated(df[cols], fromLast = TRUE), ]

#  col1 col2 col3 col4 col5
#1    1    2    3    4    5
#2    3    4    3    6    8
#3    2    2    5    4    5
#4    4    2    7    4    5
#5    5    4    8    6    8

或者使用dplyr 解决此问题的另一种方法是group_by 相应的列并选择组中包含多于一行的组。

library(dplyr)
df %>%  group_by_at(cols) %>% filter(n() > 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2015-06-08
    相关资源
    最近更新 更多