2017-07-28 69 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())' –