我有一个数据表,如下所示:
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
做同样的事情?
答案 0 :(得分:0)
DT %>%
group_by(id) %>%
mutate(id.date = date[1])