将组第一行的值分配给整个组

时间:2018-12-24 08:51:10

标签: r dataframe data.table tidyverse

我有一个数据表,如下所示:

DT<- data.table(id=c(1,1,1,1,2,2,2,2), date = c(10,11,12,13,12,12,14,18), seq = c(1,2,3,4,1,2,3,4,1,2,3,4)) 
setkey(DT,id)
setorder(DT,id,seq)

> DT
   id date seq
1:  1   10   1
2:  1   11   2
3:  1   12   3
4:  1   13   4
5:  2   12   1
6:  2   12   2
7:  2   14   3
8:  2   18   4

我想创建一个新列“ id.date”,该列将指示每个id第一行的“ date”值。因此,新的data.table将是:

   id date seq id.date
1:  1   10   1      10
2:  1   11   2      10
3:  1   12   3      10
4:  1   13   4      10
5:  2   12   1      12
6:  2   12   2      12
7:  2   14   3      12
8:  2   18   4      12

我知道我可以通过获取第一行的值

DT[,.SD[1,date],by=id]$V1

但是如何将该值分配给组的所有行?

是否可以对dplyr做同样的事情?

1 个答案:

答案 0 :(得分:0)

DT %>%
  group_by(id) %>%
  mutate(id.date = date[1])