gpt4 book ai didi

R 创建函数添加水年列

转载 作者:行者123 更新时间:2023-12-04 02:04:09 24 4
gpt4 key购买 nike

我希望能够为时间序列创建一个水年列。美国水年从 10 月到 9 月,并被视为它结束的年份。例如2014水年为2013年10月1日-2014年9月30日。

这是美国水年,但不是唯一的水年。因此,我想输入一个开始月份并计算该日期的水年。

例如,如果我的数据看起来像

        date
2008-01-01 00:00:00
2008-02-01 00:00:00
2008-03-01 00:00:00
2008-04-01 00:00:00
.
.
.
2008-12-01 00:00:00

我希望我的函数像这样工作:

wtr_yr <- function(data, start_month) {

does stuff

}

那么我的输出就是

wtr_yr(data, 2)

date wtr_yr
2008-01-01 00:00:00 2008
2008-02-01 00:00:00 2009
2008-03-01 00:00:00 2009
2008-04-01 00:00:00 2009
.
.
.
2009-01-01 00:00:00 2009
2009-02-01 00:00:00 2010
2009-03-01 00:00:00 2010
2009-04-01 00:00:00 2010

我首先将日期分成单独的列,但我认为这不是最好的方法。有什么建议吗?

提前致谢!

最佳答案

我们可以使用 POSIXlt 来得出答案。

wtr_yr <- function(dates, start_month=9) {
# Convert dates into POSIXlt
dates.posix = as.POSIXlt(dates)
# Year offset
offset = ifelse(dates.posix$mon >= start_month - 1, 1, 0)
# Water year
adj.year = dates.posix$year + 1900 + offset
# Return the water year
adj.year
}

现在让我们在示例中使用此函数。

# Sample input vector
dates = c("2008-01-01 00:00:00",
"2008-02-01 00:00:00",
"2008-03-01 00:00:00",
"2008-04-01 00:00:00",
"2009-01-01 00:00:00",
"2009-02-01 00:00:00",
"2009-03-01 00:00:00",
"2009-04-01 00:00:00")

# Display the function output
wtr_yr(dates, 2)

# Combine the input and output vectors in a dataframe
df = data.frame(dates, wtr_yr=wtr_yr(dates, 2))

关于R 创建函数添加水年列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27626533/

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