有什么方法可以选择数据集中的某些行,对于某些列,它们多次重复出现?

时间:2019-06-29 14:41:42

标签: r database

我有一个包含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中具有相同的值,第二行和第五行在那些列中具有相同的值。因此,我将选择这些行,并将新数据集设置为

 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`

1 个答案:

答案 0 :(得分: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)