由于数据已经排序,您可以
first
每组的值
library(dplyr)
df %>%
group_by(ID) %>%
mutate(NewDate = first(Date))
# ID Date NewDate
# <int> <fct> <fct>
#1 1 01/01/2018 01/01/2018
#2 2 01/01/2010 01/01/2010
#3 2 01/01/2012 01/01/2010
#4 2 01/01/2013 01/01/2010
#5 3 01/01/2015 01/01/2015
#6 3 01/01/2018 01/01/2015
在R基地,我们可以用
ave
df$NewDate <- with(df, ave(Date, ID, FUN = function(x) x[1]))
df
# ID Date NewDate
#1 1 01/01/2018 01/01/2018
#2 2 01/01/2010 01/01/2010
#3 2 01/01/2012 01/01/2010
#4 2 01/01/2013 01/01/2010
#5 3 01/01/2015 01/01/2015
#6 3 01/01/2018 01/01/2015
我们也可以用
head
具有
大道
df$NewDate <- with(df, ave(Date, ID, FUN = head, 1))
min
假如
Date
列为“日期”类
df$NewDate <- with(df, ave(Date, ID, FUN = min))
在
dplyr
那会是
df %>%
group_by(ID) %>%
mutate(NewDate = min(Date))