如何将字符列转换为日期?

How to convert character column to date?

我的数据框:

  yearmonth basinflow
  <chr>         <dbl>
1 1966-01   0.000105 
2 1966-02   0.0000946
3 1966-03   0.816    
4 1966-04   5.17     
5 1966-05   0.102    
6 1966-06   0.0729   

我想添加一个仅包含月份值的列,但是无法将年月转换为具有 as.Date 的日期。

as.Date(df_Month$yearmonth, format = "%Y-%m")

[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [35] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

结果是这样的。我可以尝试什么?或者有没有办法只调用月份部分而不是日期?

我们还需要一天 Date class 我们可以 paste 然后使用 %Y-%m-%d 或跳过 format 作为默认值格式为 %Y-%m-%d

as.Date(paste0(df_Month$yearmonth, "-01"), format = "%Y-%m-%d")

需要先转换为日期吗?您可以只从字符串中提取月份。这将从字符串中提取“-”之后的所有内容作为数字类型。

as.numeric(gsub(".*-","",df_Month$yearmonth))

使用 zoo::as.yearmon() 函数 and/or 上面的解决方案 here 回答了这个问题。