【问题标题】:Converting from factor to date in R在R中从因子转换为日期
【发布时间】:2017-03-18 01:11:38
【问题描述】:

我正在以字符的形式读取我的数据,如下所示:

gc <- read.csv("C:/Users/name/Documents/folder 1/folder 2/folder 3/gc_data1.csv", header = TRUE, stringsAsFactors=FALSE)

我可以gc$date 检查日期是否都在那里并且看起来不错,作为字符。现在当我尝试将它们转换为日期时出现了问题:

gc$date <- as.Date(gc$date, format="%d/%m/%Y")

我尝试使用“as.Date”函数,其中一些变成了“NA”。控制台行 [1-56] 和 [381-446] 已正确转换(日期分别显示为 yyyy-mm-dd:2016-12-09 和 2016-07-11),其余显示 NA。

这里发生了什么,如何将所有日期从字符转换为日期?

数据来自保存为 csv 的 excel 工作表,如下所示(日期和绘图更改):

|情节|日期|
|--------|--------|
|小米13| 2016 年 9 月 19 日|
|小米23| 2016 年 9 月 19 日|
|So14| 2016 年 10 月 26 日|
|小米12| 2016 年 11 月 21 日|

【问题讨论】:

  • 请发布您的数据样本。
  • 我们看不到您的数据,因此很难为您提供帮助。
  • 好的!我以粗略的方式添加了我的数据的 sn-p,我还应该做些什么来共享我的数据?

标签: r date na


【解决方案1】:

首先,您的数据:

R> dt <- as.factor(c("9/19/2016", "9/19/2016", "10/26/2016", "11/21/2016"))
R> dt
[1] 9/19/2016  9/19/2016  10/26/2016 11/21/2016
Levels: 10/26/2016 11/21/2016 9/19/2016
R>

其次,使用anytime 包中的anydate() 函数——除其他外,它可以直接作用于因子:

R> library(anytime)
R> anydate(dt)
[1] "2016-09-19" "2016-09-19" "2016-10-26" "2016-11-21"
R> 

【讨论】:

    【解决方案2】:

    您的数据采用月/日/年格式,但您使用日/月/年作为格式字符串。如果你修复它的工作原理:

    x <- as.factor(c("9/19/2016", "9/19/2016", "10/26/2016", "11/21/2016")) 
    
    as.Date(x, format = "%m/%d/%Y")
    ## [1] "2016-09-19" "2016-09-19" "2016-10-26" "2016-11-21"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      相关资源
      最近更新 更多