R 根据组内的特定行,在组内变异
假设我有一个person X程序“long”格式的人员程序开始和结束日期的数据框:R 根据组内的特定行,在组内变异,r,dplyr,mutate,R,Dplyr,Mutate,假设我有一个person X程序“long”格式的人员程序开始和结束日期的数据框: df% 变异(alpha.start.date=#??) 谢谢 我们可以通过获取与“alpha”过程对应的“end.date”,使用mutate创建变量 library(dplyr) df %>% group_by(person.id) %>% mutate(alpha.start.date = end.date[procedure == "alpha"]) # A tibble: 6 x
df%
变异(alpha.start.date=#??)
谢谢 我们可以通过获取与“alpha”过程对应的“end.date”,使用
mutate
创建变量
library(dplyr)
df %>%
group_by(person.id) %>%
mutate(alpha.start.date = end.date[procedure == "alpha"])
# A tibble: 6 x 5
# Groups: person.id [3]
# person.id start.date end.date procedure alpha.start.date
# <dbl> <fct> <fct> <fct> <fct>
#1 1 2015-01-01 2015-01-30 alpha 2015-01-30
#2 1 2015-01-05 2015-02-05 beta 2015-01-30
#3 2 2016-05-06 2016-06-23 alpha 2016-06-23
#4 2 2015-04-01 2015-05-30 beta 2016-06-23
#5 3 2015-07-01 2015-08-10 alpha 2015-08-10
#6 3 2015-01-06 2015-02-05 beta 2015-08-10
库(dplyr)
df%>%
分组依据(个人id)%>%
变异(alpha.start.date=end.date[过程==“alpha”])
#一个tibble:6x5
#组:person.id[3]
#person.id start.date end.date程序alpha.start.date
#
#1 1 2015-01-01 2015-01-30阿尔法2015-01-30
#21 2015-01-05 2015-02-05 beta 2015-01-30
#32 2016-05-06 2016-06-23阿尔法2016-06-23
#4.2 2015-04-01 2015-05-30 beta 2016-06-23
#5.3 2015-07-01 2015-08-10阿尔法2015-08-10
#6.3 2015-01-06 2015-02-05 beta 2015-08-10
您是否需要df%>%groupby(person.id)%%>%mutate(alpha.start.date=end.date[procedure==“alpha”])
如果列是有序的,并且每个组的alpha始终是第一个,那么请执行mutate(alpha.start.date=first(end.date))
就是这样!谢谢一旦它允许我使用.rad解决方案,将给出最佳答案-如果有>1
alpha过程,这将抛出一个错误。只是提醒一下
df %<>%
group_by(person.id) %>%
mutate(alpha.start.date = #??)
library(dplyr)
df %>%
group_by(person.id) %>%
mutate(alpha.start.date = end.date[procedure == "alpha"])
# A tibble: 6 x 5
# Groups: person.id [3]
# person.id start.date end.date procedure alpha.start.date
# <dbl> <fct> <fct> <fct> <fct>
#1 1 2015-01-01 2015-01-30 alpha 2015-01-30
#2 1 2015-01-05 2015-02-05 beta 2015-01-30
#3 2 2016-05-06 2016-06-23 alpha 2016-06-23
#4 2 2015-04-01 2015-05-30 beta 2016-06-23
#5 3 2015-07-01 2015-08-10 alpha 2015-08-10
#6 3 2015-01-06 2015-02-05 beta 2015-08-10