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

问题描述

我的数据框:

  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   

我想添加一个仅包含月份值的列,但是将 yearmonth 转换为带有 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 类也需要一天,我们可以 paste 然后使用 %Y-%m-%d 或跳过 format 因为默认格式是 {{1} }

%Y-%m-%d
,

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

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

,

此问题已使用 zoo::as.yearmon() 函数和/或上述解决方案回答 here