根据参考日期计算创建新变量

时间:2020-07-24 20:14:25

标签: r dataframe

我有一个数据框,其中有多个参与者(由变量“ ID”区分)和与每行数据关联的日历日期(MM / DD / YYYY)。

我想创建一个“天”列,以计算自每个ID的第一个日历日期以来的经过天数(即,将每个参与者的第一个日期用作参考日期)。

示例结构:

ID Calendar.date Day
 1    06/23/2020   1
 1    06/25/2020   3
 1    06/26/2020   4
 2    03/24/2019   1
 2    03/30/2019   7
 2    03/31/2019   8

1 个答案:

答案 0 :(得分:1)

这是一种dplyr方法。如果您使用group_by ID,则可以从first日期中减去每个ID的日期。假设您的数据位于数据帧df中:

library(dplyr)

df %>%
  group_by(ID) %>%
  mutate(Calendar_date = as.Date(Calendar_date, format = "%m/%d/%Y"),
         Day = Calendar_date - first(Calendar_date) + 1)

对于以下输出,我修改了示例数据,以避免2月出现不可能的日期。同样,Day的结果是一个difftime对象。如果您只希望数字天数,请使用as.numeric

as.numeric(Calendar_date - first(Calendar_date))

输出

# A tibble: 6 x 3
# Groups:   ID [2]
     ID Calendar_date Day   
  <dbl> <date>        <drtn>
1     1 2020-06-23    1 days
2     1 2020-06-25    3 days
3     1 2020-06-26    4 days
4     2 2019-02-20    1 days
5     2 2019-02-26    7 days
6     2 2019-02-27    8 days