是否有R函数可以读取date_isoweek格式的Date?

时间:2019-07-31 13:44:44

标签: r as.date

我有特定格式的数据year_isoweek,例如本周的2019_31。我希望将其表示为进一步处理的日期。

基本rlubridate
我发现了一些有价值的解决方法,但这些方法都不能与ISO 8601(%V)一起使用,从而又导致其他问题:
convert year week string to date
Convert week number to date
Transform year/week to date object

a <- c("2019_7", "2019_3", "2018_18")
as.Date(a, "%Y_%V")

实际输出:

[1] "2019-07-31" "2019-07-31" "2018-07-31"

我想要什么: "2019-02-11" "2019-01-14" "2018-04-30"作为类date

1 个答案:

答案 0 :(得分:0)

好的,我找到了使用软件包ISOweek的解决方案:

library(ISOweek)
library(stringr)
a <- c("2019", "2019", "2018")
b <- str_pad(c("7", "3", "18"), 2, pad = "0")
c <- ISOweek2date(paste0(a,"-W",b, "-",1))
str(c)

Date[1:3], format: "2019-02-11" "2019-01-14" "2018-04-30"

完全一样 根据需要,将"2019-02-11" "2019-01-14" "2018-04-30"设为班级date

ISOweek有一个不便之处,因为它不接受单个数字或单个char字符串作为星期编号(例如,不接受“ 7”,仅接受“ 07”)。因此,也需要stringr软件包。