gpt4 book ai didi

r - 将四位数年份值转换为类日期

转载 作者:行者123 更新时间:2023-12-03 11:20:46 26 4
gpt4 key购买 nike

我的数据集中有一个整数列,它有四位数的年份值,例如:

 c(2001, 2002, 2002, 2002, 2003, 2005) 
我尝试将四位数年份转换为类 Date使用 as.Date :
year <- as.Date(as.character(data_file$evtYear), format = "%Y")
但输出是:
"2001-05-15" "2002-05-15" "2002-05-15" "2002-05-15" "2003-05-15" "2005-05-15"
这给出了错误的输出。它在一个日期(2001 年和 15 年)中给出两年的值。
我只想将我的四位数年份部分从原始数据转换为“年份”作为类 Date .预期输出很简单:
2001 2002 2002 2002 2003 2005 
但他们的类(class)应该是 Date类型。
如何在 R 中实现这一点?

最佳答案

根据评论,提出问题的人不需要将数字年份更改为 "Date"。类(class);尽管如此,问题是如何做到这一点,所以这里是一个答案。

以下是创建 "Date" 的几种方法来自 4 位数字年份的类对象。全部使用as.Date :

yrs <- c(2001, 2002, 2002, 2002, 2003, 2005)

1) ISO 日期
as.Date(ISOdate(yrs, 1, 1))  # beginning of year
as.Date(ISOdate(yrs, 12, 31)) # end of year

这个 ISOdate 解决方案有点棘手,因为它创建了一个中间 POSIXct 对象,因此可能存在时区问题。您可能更喜欢以下之一。

2)粘贴
as.Date(paste(yrs, 1, 1, sep = "-")) # beginning of year
as.Date(paste(yrs, 12, 31, sep = "-")) # end of year

3) 动物园::as.yearmon
library(zoo)

as.Date(as.yearmon(yrs)) # beginning of year
as.Date(as.yearmon(yrs) + 11/12, frac = 1) # end of year

注:y是上述任何一项的结果,然后 format(y, "%Y")给出字符年份和 as.numeric(format(y, "%Y"))给出数字年份。

关于r - 将四位数年份值转换为类日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30255833/

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