我想将存储为两列(开始、结束)+值的日期范围转换为仅包含日期和值的两个新列。
my data:
id end start value
1 4421 2014-01-01 2014-01-03 10
2 4421 2014-01-04 2014-01-04 500
3 4421 2014-01-05 2014-01-07 20
4 5560 2014-01-02 2014-01-03 100
5 5560 2014-01-04 2014-01-04 600
我想要的是:
Date id value
0 2014-01-01 4421 10
1 2014-01-02 4421 10
2 2014-01-03 4421 10
3 2014-01-04 4421 500
4 2014-01-05 4421 20
5 2014-01-06 4421 20
6 2014-01-07 4421 20
7 2014-01-01 5560 NA
8 2014-01-02 5560 100
9 2014-01-03 5560 100
10 2014-01-04 5560 600
我正在使用 dplyr,因此可以与 mutate 和管道等一起使用的东西会很有用。
样本数据:
id <- c(4421, 4421, 4421, 5560, 5560)
start <- c('2014-01-01','2014-01-04','2014-01-05','2014-01-02','2014-01-04')
end = c('2014-01-03','2014-01-04','2014-01-07','2014-01-03','2014-01-04')
value <- c(10,500,20,100,600)
my_data <- data.frame(id,start,end,value)
仅供参考,有一个非常python 中类似的问题 https://stackoverflow.com/questions/32672675/how-to-transform-date-range-stored-as-two-columns-start-end-to-create-new-row,但我用的是R。
编辑:格式化
编辑2:这是重复的,原始帖子中有一些很棒的东西。
谢谢@www 我喜欢一路都有管道。 @Wen-Ben 感谢 Pandas 的提示,我将来可能会使用 Pandas。