簡體   English   中英

在 R 中以“YYYY-WW”格式從字符轉換為日期

[英]Convert from character to date in a "YYYY-WW" format in R

我很難將字符轉換為 R 中的日期。

我有一個文件,其中日期為“2014-01”,其中第一個是年份,第二個是一年中的第幾周。 我想將其轉換為日期類型。

我嘗試了以下

z <- as.Date('2014-01', '%Y-%W')
print(z)

Output: "2014-12-05"

這不是我想要的。 我想得到相同的格式,即。 output 應該是“2014-01”,但現在是日期類型。

聽起來您正在處理某個版本的年周,它存在於 lubridate 的三個lubridate中:

week() 返回日期和 1 月 1 日之間發生的完整 7 天周期數加一。

isoweek() 返回出現在 ISO 8601 系統中的星期,該系統使用重復出現的閏周。

epiweek() 是美國 CDC 版本的流行病學周。 它遵循與 isoweek() 相同的規則,但從星期日開始。 在世界其他地區,慣例是從星期一開始流行病學周,這與 isoweek 相同。

Lubridate 具有從日期中提取這些的功能,但我不知道從一周到一個有代表性的一天(可能的 7 天)到另一個方向 go 的內置方法。 如果您要處理第一個版本,一個簡單的方法是將7 * (Week - 1)添加到當年的 1 月 1 日。

library(dplyr)
data.frame(yearweek = c('2014-01', '2014-03')) %>%
  tidyr::separate(yearweek, c("Year", "Week"), convert = TRUE) %>%
  mutate(Date = as.Date(paste0(Year, "-01-01")) + 7 * (Week-1))

  Year Week       Date
1 2014    1 2014-01-01
2 2014    3 2014-01-15

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM