【问题标题】:R - Date conversion from factorR - 从因子转换的日期
【发布时间】:2016-10-14 14:00:53
【问题描述】:

这是我在这里的第一篇文章,但我已经从大家那里受益匪浅。但是,我无法自己解决此问题:

我正在使用 read.csv 导入一组相当大的观察结果,包括它们的日期。我的数据框中的相应日期列('data$date')是一个整数向量,如下所示:

head(data$date)
[1] "26 Oct 15" "03 Nov 15" "10 Nov 15" "17 Nov 15" "19 Nov 15" "19 Nov 15"
class(data$date)
[1] "factor"

在尝试将其转换为“日期”对象时,我使用了“as.Date()”函数:

tmp <- as.Date(data$date, format="%d %h %Y")
head(tmp)
[1] "0015-10-26" "0015-11-03" "0015-11-10" "0015-11-17" "0015-11-19" "0015-11-19"

如您所见,它确实得到了正确的约会对象,但有两个问题:
1) 为什么年份显示为“0015”而不是“2015”?
2)我假设该函数以默认格式返回日期。但是,我想使用不同格式的日期(即初始格式),我提到了函数

format()

但是,此函数返回一个我不能用于分析的字符对象。因此,有没有其他方法可以在不更改对象类的情况下更改日期格式?

感谢您的支持!
雅各布

【问题讨论】:

  • 使用%y而不是%Y,应该解决年份。
  • tmp + 2000 ? :) 开个玩笑...我认为这是因为您指定了%Y 而不是%y

标签: r date


【解决方案1】:

您也许可以尝试以下方法

vec <- c("26 Oct 15", "03 Nov 15", "10 Nov 15", "17 Nov 15", "19 Nov 15", "19 Nov 15")

tmp <- as.Date(vec, format="%d %h %y")

好像解决了

谢谢

【讨论】:

  • 谢谢,完成了这项工作。但是,我可以在不转换 d 的情况下更改格式吗?
  • 谢谢,完成了这项工作。但是,我可以在不将日期转换为字符对象的情况下更改格式吗?
  • 好像fac_vec &lt;- as.factor(vec) tmp &lt;- as.Date(fac_vec, format="%d %h %y") 看起来没什么区别
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 2014-06-14
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
相关资源
最近更新 更多