【问题标题】:Converting a column of integers that aren't in date format already into abbreviated months将不是日期格式的整数列转换为缩写月份
【发布时间】:2019-11-26 18:51:28
【问题描述】:

我正在尝试将一列完整整数转换为缩写月份的日期格式。该列的数字如下:01 02 04 15 13. 等。我希望这些数字显示它们对应的月份。有人可以告诉我怎么做。我正在尝试的代码是这样的:

#Changing integers to Month Abbrev.
dets_per_month$monthcollected = as.POSIXlt(dets_per_month$monthcollected, format = "%m", origin = "%m")

但我意识到该列没有来源,因为它不是日期格式。

【问题讨论】:

  • 可以使用更多信息。例如,15 应该是什么日期?对于i = 1:12,您可以使用month.abb[i]
  • 抱歉应该是 12,而不是 15。
  • 我认为第 13 个月也是一个错误?
  • 这能回答你的问题吗? Convert a numeric month to a month abbreviation
  • 确保您的列不是一个因素。如果是先使用as.character

标签: r date integer


【解决方案1】:
month.abb[as.integer(dets_per_month$monthcollected)]

【讨论】:

  • 怎么样:month.abb[as.integer(as.character(dets_per_month$monthcollected))]
  • @KristenCyr:如果这个或任何答案已经解决了您的问题,请点击复选标记考虑accepting it。这将帮助可能遇到同样问题的未来读者。它也会给回答者和你自己带来一些声誉。谢谢!
【解决方案2】:

我会推荐 lubridate 包来处理所有与日期时间相关的事情。这是一个漂亮的包,比基础 R 更实用,但是 YMMV。

library(lubridate)
x <- rep(1:12, 2)
lubridate::month(x, label=TRUE)

【讨论】:

  • 这给了我一个错误,因为它不知道如何将列转换为 POXIClt
  • 嗯。您在问题中说您想要“将一列完整整数转换为缩写月份的日期格式”。日期格式部分似乎不可能——“Nov”不是日期,它是日期的一部分。也许您可以为我们提供更多背景信息?我也想知道dets_per_month$monthcollected 是否是数字。根据您上面的描述,它听起来像一个字符串变量(前导零)。也许lubridate::month(as.numeric(dets_per_month$monthcollected), label=TRUE) 会让你更接近?
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 2021-12-09
  • 1970-01-01
  • 2022-06-10
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
相关资源
最近更新 更多