在 R [duplicate] 的数据表列中使用可变日期范围重复行

Repeat rows using variable date range in data table column in R [duplicate]

提问人:Maddy 提问时间:1/24/2023 更新时间:1/24/2023 访问量:154

问:

我有一个,其中两列是开始和结束日期。我需要使用相应的日期范围重复每一行。data.tableR

library(data.table)
input = data.table(X=c('John','John','Peter'),Age=c(20,25,12),StartDate=as.Date(c('2022-01-20','2018-12-03','2023-01-05')),StopDate=as.Date(c('2022-01-23','2018-12-07','2023-01-05')))

X     | Age| StartDate  | StopDate              X     | Age| Date
John  | 20 | 2022-01-20 | 2022-01-23    -->     John  | 20 | 2022-01-20
John  | 25 | 2018-12-03 | 2018-12-07            John  | 20 | 2022-01-21
Peter | 12 | 2023-01-05 | 2023-01-05            John  | 20 | 2022-01-22
                                                John  | 20 | 2022-01-23
                                                John  | 25 | 2018-12-03
                                                John  | 25 | 2018-12-04
                                                John  | 25 | 2018-12-05
                                                John  | 25 | 2018-12-06
                                                John  | 25 | 2018-12-07
                                                Peter | 15 | 2023-01-05
          
r data.table 范围 数据操作

评论


答:

1赞 Ric 1/24/2023 #1
library(data.table)
input = data.table(X=c('John','John','Peter'),Age=c(20,25,12),StartDate=as.Date(c('2022-01-20','2018-12-03','2023-01-05')),StopDate=as.Date(c('2022-01-23','2018-12-07','2023-01-05')))

input[,.(X, Age, Date = seq.Date(StartDate, StopDate, 1)), by=.(n=row.names(input))][,-1]
#>         X Age       Date
#>  1:  John  20 2022-01-20
#>  2:  John  20 2022-01-21
#>  3:  John  20 2022-01-22
#>  4:  John  20 2022-01-23
#>  5:  John  25 2018-12-03
#>  6:  John  25 2018-12-04
#>  7:  John  25 2018-12-05
#>  8:  John  25 2018-12-06
#>  9:  John  25 2018-12-07
#> 10: Peter  12 2023-01-05

评论

1赞 Ric 1/24/2023
也可以使用by=1:nrow(input)