【问题标题】:Convert year and week column into month R [duplicate]将年和周列转换为月 R [重复]
【发布时间】:2019-03-01 12:07:25
【问题描述】:

我想根据年份和周数确定月份。这个问题是独一无二的,因为它缺少这些示例Transform year/week to date objectConvert week number to date 中所需的星期几信息。

year <- c("2017", "2017", "2018")
week <- c("37", "53", "01")
month <- lubridate::month(as.Date(paste0(year, "-", week), format = "%Y-%V"))

> month
[1] 9 9 9

由于某种原因,这将为我的向量中的每个元素返回9。 9 月是第一次观察的正确月份,但对于其余两个则不是这样。

预期输出:

> month
[1] 9 12 1

编辑:事实证明,如果不知道星期几,这项任务不太可能解决。我将尝试找到解决年份/日期的方法,以完全避免此问题。

【问题讨论】:

  • 我已经尝试过遵循这些示例。他们使用%U 周格式而不是%V 格式。当我使用%U 时,当周为53 时,我得到一个NA。当我使用%V 格式时,每个月都是9... 这些示例还有一个我缺少的“day”或“weekday”元素。
  • 啊,好点……那我得想点别的办法了。
  • 不精确,但可能足够好:library(lubridate);图书馆(magrittr); paste(year, 1,1) %&gt;% ymd %&gt;% add(as.numeric(week) * 7) %&gt;% month()

标签: r date lubridate dayofweek week-number


【解决方案1】:

试试这个:

> year <- c(2017, 2017, 2018)
> week <- c(37, 53, 01)
> month <- lubridate::month(as.Date(paste0(year, "-", week, "-", 10), format = "%Y-%U-%u"))
> month
 [1] 9 NA 1

您在此处获得 NA 的原因,因为它将计算到第 52 周为止的月份。

【讨论】:

  • 你能解释一下为什么你在星期几中使用10吗?
  • 您需要添加一个日期,因为您必须指定年-月-日格式。您可以输入 1-30 范围内的任何日期
  • 标准说应该是1-7,但是你可以放任何整数。当您有 lubridate:month 时,此日期部分将被忽略
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 2023-03-17
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
相关资源
最近更新 更多