【问题标题】:Convert week number to date keeps adding week number to today's date将周数转换为日期不断将周数添加到今天的日期
【发布时间】:2019-09-13 15:36:00
【问题描述】:

抱歉,这个问题已被多次询问,但所有发布的回复都对我有用。我正在尝试使用 as.Date 函数将周数转换为日期或理想的月份名称。但是,无论我在哪一周投入,我都会得到相同的结果,我只是不知道为什么。任何帮助表示赞赏

```R
as.Date(x = 03, format = "%W",origin = "2019-01-01")
# This results in "2019-09-16"

as.Date(x = 4, format = "%W",origin = "2019-01-01")
# This results in "2019-09-17"

as.Date(x = 12, format = "%w",origin = "2019-01-01")
# This results in "2019-09-25"

as.Date(x = 12, format = "%W",origin = "2018-01-01")
# This results in "2019-09-25"
```

即使我更改年份,它也会产生相同的输出。它似乎将今天的日期(13 日)添加到周数中。最令人沮丧的部分是这是一个旧代码,到昨天为止一直运行良好

【问题讨论】:

  • 预期结果将是对应于一周开始的一年中的日期。例如,第 12 周将是 2019-03-18

标签: r as.date


【解决方案1】:

来自帮助:“如果日期字符串没有完全指定日期,则返回的答案可能是系统特定的。最常见的行为是假设缺少的年、月或日是当前的。”

解决这个问题的最简单方法是指定日期然后转换:

 as.Date(x = paste(3, "0"), format = "%W %w")
[1] "2019-01-15"

 as.Date(x = paste(10, "0"), format = "%W %w")
[1] "2019-03-04"

如果您从当前年份更改年份,您还需要指定年份。

as.Date(x = paste(10, "0 2018"), format = "%W %w %Y")
[1] "2018-03-04"

您可以在您的向量中替换上述示例中的 3 或 10。

【讨论】:

  • 非常感谢!这是有效的。虽然我不完全明白为什么会这样。
猜你喜欢
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2012-07-07
相关资源
最近更新 更多