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
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