需要帮助将R中的列从字符转换为日期

时间:2019-09-15 15:10:06

标签: r

我正在尝试将列从字符转换为日期。

列中的当前格式为“ YearMmonth”,如“ 1990M01”一样。 这是一种非常奇怪的格式,所以我想知道当我使用as.Date代码时R如何读取它。基本上是“年月月号”。我知道如何使用其余代码,我只需要知道如何将其转换为R。

我尝试使用

df <- as.Date(df, "%YM%m", "%Y/%m")

df <- as.Date(paste0("01-", df), format = "%Y/%m/%d")

还有很多其他的主要问题是翻译字符列。

1 个答案:

答案 0 :(得分:2)

问题中的代码有几个问题:

  • 问题中的第一次尝试没有日期字段
  • 第二次尝试确实执行,但是将日期字段放在第一位,但格式显示最后一次。
  • 在问题中使用<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>表示结果是数据帧,但结果是df类对象,而不是数据帧。

这里有一些可行的方法。

yearmon

使用Date转换为as.yearmon对象,或使用yearmon转换为Date对象。 as.Date(as.yearmon(...))对象直接表示年和月,没有日,因此可能更可取。

yearmon

用减号替换M也可以:

library(zoo)

as.yearmon("1990M01", "%YM%m")
## [1] "Jan 1990"

as.Date(as.yearmon("1990M01", "%YM%m"))
## [1] "1990-01-01"

基本R

不涉及任何包裹的一种方式是附加一天:

as.yearmon(chartr("M", "-", "1990M01"))
## [1] "Jan 1990"

或将M更改为减号,然后加上减号和1,在这种情况下,它已经是默认格式,不需要格式字符串。

as.Date(paste("1990M01", 1), "%YM%m %d")
## [1] "1990-01-01"