获得第一和最后一个值组 - 与dplyr GROUP_BY最后的()和第()

问题描述:

下面的代码应该由集团一年的数据,然后创建每年的第一个和最后一个值两个新列。获得第一和最后一个值组 - 与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'而不是发生变异? –

dplyr::mutate()的伎俩

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