【发布时间】:2020-11-05 04:37:28
【问题描述】:
抱歉,如果这是一个重复的问题,我搜索并找不到我正在寻找的具体答案。
我有一个数据框,其中一列是 16 位代码,还有许多其他列。这是一个简化的例子:
code = c("1109619910224003", "1157919910102001", "1539820070315001", "1563120190907002")
year = c(1991, 1991, 2007, 2019)
month = c(02, 01, 03, 09)
dat = as.data.frame(cbind(code,year,month))
dat
> dat
code year month
1 1109619910224003 1991 2
2 1157919910102001 1991 1
3 1539820070315001 2007 3
4 1563120190907002 2019 9
如您所见,代码包含年、月和日信息。我的数据框中已经有年份和月份的列,但我还需要创建一个日期列,在本例中分别为 24、02、15 和 07。日期始终采用 yyyymmdd 格式,从代码中的第 6 位开始。所以我基本上需要从每个代码中提取第 12 位和第 13 位来创建我的日期列。
然后我需要根据日期信息为一年中的某一天创建另一列,所以我最终得到以下内容:
day = c(24, 02, 15, 07)
dayofyear = c(55, 2, 74, 250)
dat2 = as.data.frame(cbind(code,year,month,day,dayofyear))
dat2
> dat2
code year month day dayofyear
1 1109619910224003 1991 2 24 55
2 1157919910102001 1991 1 2 2
3 1539820070315001 2007 3 15 74
4 1563120190907002 2019 9 7 250
有什么建议吗?谢谢!
【问题讨论】:
标签: r