2017-03-07 95 views
-1

下面的代碼應該由集團一年的數據,然後創建每年的第一個和最後一個值兩個新列。獲得第一和最後一個值組 - 與dplyr GROUP_BY最後的()和第()

library(dplyr) 

set.seed(123) 

d <- data.frame(
    group = rep(1:3, each = 3), 
    year = rep(seq(2000,2002,1),3), 
    value = sample(1:9, r = T)) 

d %>% 
    group_by(group) %>% 
    mutate(
     first = dplyr::first(value), 
     last = dplyr::last(value) 
    ) 

但是,它不能正常工作。預期的結果將是

group year value first last 
    <int> <dbl> <int> <int> <int> 
1  1 2000  3  3  4 
2  1 2001  8  3  4 
3  1 2002  4  3  4 
4  2 2000  8  8  1 
5  2 2001  9  8  1 
6  2 2002  1  8  1 
7  3 2000  5  5  5 
8  3 2001  9  5  5 
9  3 2002  5  5  5 

然而,我得到這個(它以第1,在整個數據幀中的最後一個值,而不僅僅是組):

group year value first last 
    <int> <dbl> <int> <int> <int> 
1  1 2000  3  3  5 
2  1 2001  8  3  5 
3  1 2002  4  3  5 
4  2 2000  8  3  5 
5  2 2001  9  3  5 
6  2 2002  1  3  5 
7  3 2000  5  3  5 
8  3 2001  9  3  5 
9  3 2002  5  3  5 
+0

它的工作對我來說:我得到由組的第一個值和一個由組中的最後值的列。 – Jaap

+0

你能顯示的版本'dplyr' – akrun

+1

你想'summarize'而不是發生變異? –

回答

1

dplyr::mutate()的伎倆

d %>% 
    group_by(group) %>% 
    dplyr::mutate(
     first = dplyr::first(value), 
     last = dplyr::last(value) 
    ) 
相關問題