gpt4 book ai didi

r - 将yearmon列转换为R中的月份的最后日期

转载 作者:行者123 更新时间:2023-12-02 05:28:14 25 4
gpt4 key购买 nike

我有一个数据框(df),如下所示:

Date        Arrivals

2014-07 100
2014-08 150
2014-09 200

我知道我可以将yearmon日期转换为每个月的第一天,如下所示:
df$Date <- as.POSIXct(paste0(as.character(df[,1]),"-01"), format = "%Y-%m-%d")

但是,由于我的数据要到月底才可用,因此我想将其索引到末尾而不是开始,因此我无法弄清楚。任何帮助表示赞赏。

最佳答案

如果Date变量是实际的yearmon类 vector ,则从 zoo 包中,as.Date.yearmon方法可以通过其参数frac进行所需的操作。

使用您的数据,并假设Date最初是一个字符 vector

library("zoo")
df <- data.frame(Date = c("2014-07", "2014-08", "2014-09"),
Arrivals = c(100, 150, 200))

我将其转换为 yearmon vector :
df <- transform(df, Date2 = as.yearmon(Date))

假设这是您所拥有的,那么您可以使用 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,则这是单线的
## assuming `Date` is a `yearmon` object
df <- transform(df, Date = as.Date(Date, frac = 1))
## or if not a `yearmon`
df <- transform(df, Date = as.Date(as.yearmon(Date), frac = 1))

frac对象转换为 yearmon对象时,参数 Date以月份的分数表示,以分配给结果日期。因此,要获得每月的第一天,而不是像Question所示那样转换为字符并粘贴到 "-01"上,最好使用 Date强制为 frac = 0对象。

如果您的 Date中的 df不是 yearmon类对象,则可以通过将其转换为一个对象,然后使用如上所述的 as.Date()方法来解决问题。

关于r - 将yearmon列转换为R中的月份的最后日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com