为日期分配连续的天数

时间:2019-01-29 05:51:24

标签: r date

我正在使用的数据框有两列:1)人员ID和2)日期。我正在尝试为每个人分配日期的数字日值。

例如,人员1的日期为2016年1月1日(基准)至2016年1月5日(人员1的最后日期)。我想创建一个将其转换为1、2、3、4、5的天列。如果人2的日期为2016-01-13至2016-01-16,则人2的天列将为1, 2、3、4。

df <- for(i in length(unique(per1$date))){df$day[per1$date[1] + i] <- i+1}

这基本上是我想要做的,但是我收到一条错误消息:

“替换有17119行,数据有1670”

请让我知道如何编写此代码。谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用

library(data.table)

## Create Data
df <- data.table(personID = c(1,1,1,2,2,2,2), 
                 Date = c("2016-01-01", "2016-01-02", "2016-01-03", "2016-01-13", "2016-01-14", "2016-01-15", "2016-01-16"))

## Order the data according to date, per user 
df <- df[order(Date), .SD, by = personID]

## Rank the date, within each personID group
df <- df[, Day:= 1:.N, .(personID)]
df

   personID       Date Day
1:        1 2016-01-01   1
2:        1 2016-01-02   2
3:        1 2016-01-03   3
4:        2 2016-01-13   1
5:        2 2016-01-14   2
6:        2 2016-01-15   3
7:        2 2016-01-16   4