我有很多重复测量的单位
>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
答案 0 :(得分:13)
更简单地说,使用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