web-dev-qa-db-fra.com

Dissocier après regroupement par une seule variable dans dplyr

J'ai beaucoup d'unités mesurées à répétition

>df
Item value  year
1     20     1990
1     20     1991
2     30     1990
2     15     1990
2     5      1991
3     10     1991
4     15     1990
5     10     1991
5      5     1991

J'essaie d'utiliser dplyr pour supprimer les valeurs qui ont un faible nombre d'observations. Sur ce jouet, les données permettent de dire que je veux supprimer les données qui ont moins de 2 chefs d'accusation

>df <- df %>% 
  group_by(Item) %>% 
  tally() %>% 
  filter(n>1)

Item  n
1     2
2     3
5     2

Le problème est que je voudrais étendre cela à ce qu'il était, mais avec ce filtre. J'ai tenté d'utiliser la commande ungroup, mais cela ne semble avoir d'effet que lors du regroupement par deux variables. Comment puis-je filtrer par nombre d'éléments puis récupérer mes variables d'origine, c'est-à-dire value et year. ça devrait ressembler à ça

>df
Item value  year
1     20     1990
1     20     1991
2     30     1990
2     15     1990
2     5      1991
5     10     1991
5      5     1991
11
Alex

Plus simplement, utilisez row_number () de dplyr

library(dplyr)

df <- read.table("clipboard", header = TRUE, stringsAsFactors = FALSE)

df %>% 
  group_by(Item) %>% 
  filter(max(row_number()) > 1) %>%
  ungroup()

# A tibble: 7 x 3
# Groups:   Item [3]
   Item value  year
  <int> <int> <int>
1     1    20  1990
2     1    20  1991
3     2    30  1990
4     2    15  1990
5     2     5  1991
6     5    10  1991
7     5     5  1991
14
r.bot