R - 将字符串转换为只有年/月

时间:2015-12-09 14:58:08

标签: r date formatting time-series

目标:绘制时间序列。

问题:X轴数据当然被视为一个字符,我将字符转换为日期时遇到了问题。

new.df <- df %>%
group_by(Month, Year) %>%
summarise(n = n())

new.df <- new.df %>%
unite(Date, Month, Year, sep = "/") %>%
mutate(Total = cumsum(n))

所以,我最终得到一个如下所示的数据框:

Date     n     Group    Total
8/2010   1       1        1
9/2010   414     1       415
etc

我正在尝试将Date列转换为Date格式。该列是一个字符类。所以,我试着做了

new.df$Date <- as.Date(New.Patients$Date, %m/%Y)

但是,当我这样做时,它会将整个Date列替换为NA。

我不确定这是不是因为我的单位数月份日期前面没有0。我做了unite()函数只是因为我认为它可以使它更容易,但它可能不会。

我最初使用lubridate包创建了Year / Month变量,但我不确定是否可以在此处加入。如果有人能告诉我如何,奖励积分。

我将不胜感激任何帮助或指导。我敢肯定,我现在只是一个大脑屁并不是那么难。

2 个答案:

答案 0 :(得分:4)

您可以尝试这样:

library(zoo) # for yearmon

new.df$Date <- as.yearmon(New.Patients$Date, format="%m/%Y")

但如果你确实需要它为as.Date那么我猜你必须定义一天(例如01)@lukeA在评论中建议。

答案 1 :(得分:2)

正如lukeA在评论中指出的那样,我的问题是as.Date函数需要一天在字符串中的某个位置。

因此,只需将“01”(或者我认为几乎任何其他两位数组合都可以使用)粘贴到每个日期的前面就可以解决问题。