如果
Date
变量是一个实际的
yearmon
类向量,来自
zoo包,则
as.Date.yearmon
方法可以通过其参数
frac
实现您想要的效果。
使用您的数据,并假设
Date
最初是一个字符向量。
library("zoo")
df <- data.frame(Date = c("2014-07", "2014-08", "2014-09"),
Arrivals = c(100, 150, 200))
我将这个转换为一个yearmon
向量:
df <- transform(df, Date2 = as.yearmon(Date))
假设这就是您所拥有的内容,那么您可以使用
as.Date()
和
frac = 1
来实现您想要的结果:
假设这就是您所拥有的内容,那么您可以使用as.Date()
和frac = 1
来实现您想要的结果:
df <- transform(df, Date3 = as.Date(Date2, frac = 1))
这将给出:
> df
Date Arrivals Date2 Date3
1 2014-07 100 Jul 2014 2014-07-31
2 2014-08 150 Aug 2014 2014-08-31
3 2014-09 200 Sep 2014 2014-09-30
这显示了每个步骤。如果您只想要最终的Date
,那么这就是一行代码。
df <- transform(df, Date = as.Date(Date, frac = 1))
df <- transform(df, Date = as.Date(as.yearmon(Date), frac = 1))
frac
参数是指在从
yearmon
对象转换为
Date
对象时分配给结果日期的月份分数。因此,要获取每月的第一天,而不是将其转换为字符并粘贴到
"-01"
上,最好使用
frac = 0
来强制将其转换为
Date
对象。
如果您的df
中的Date
不是yearmon
类对象,则可以通过将其转换为yearmon
对象,然后按照上述方法使用as.Date()
方法来解决问题。