2017-07-28 27 views
1

只用一个变量分组后我有被测量重复次数取消组合在dplyr

>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命令,但这似乎只有在用两个变量进行分组时才有效果。我怎样才能按物品数量过滤,然后得到我的原始变量,即valueyear。它应该是这样的

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

尝试使用'add_tally()'代替。或者在'group_by()'后面加上'filter(n()> 1)'。 –

+0

@AndreyKolyadin - 你应该添加,作为答案 – SymbolixAU

回答

6

更简单地说,使用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 
+3

你可以使用'n()'而不是'max(row_number())' –