R 根据组内的特定行,在组内变异

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

假设我有一个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 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