提问人:Maddy 提问时间:1/24/2023 更新时间:1/24/2023 访问量:154
在 R [duplicate] 的数据表列中使用可变日期范围重复行
Repeat rows using variable date range in data table column in R [duplicate]
问:
我有一个,其中两列是开始和结束日期。我需要使用相应的日期范围重复每一行。data.table
R
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
答:
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)
评论