我有很多重复测量的单位
>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
我正在尝试使用dplyr删除观察值较少的值。在此玩具数据上,我要删除的数据少于2个
>df <- df %>%
group_by(Item) %>%
tally() %>%
filter(n>1)
Item n
1 2
2 3
5 2
问题是我想使用此过滤器将其扩展回原来的状态。我尝试使用
ungroup
命令,但这似乎仅在按两个变量分组时才起作用。如何按项目计数过滤,然后取回原始变量,即value
和year
。它应该看起来像这样>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
最佳答案
更简单地说,使用dplyr的row_number()
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