在 R 中从因子转换为日期
Converting from factor to date in R
我正在以字符形式读取数据,如下所示:
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.
这是怎么回事?如何将所有日期从字符转换为日期?
数据来自 excel sheet 保存为 csv,看起来像这样(日期和情节变化):
|情节|日期|
|------|--------|
|米13| 2016 年 9 月 19 日|
|米23| 2016 年 9 月 19 日|
|所以14| 2016 年 10 月 26 日|
|米12| 2016 年 11 月 21 日|
首先,您的数据:
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>
您的数据采用 month/day/year 格式,但您使用 day/month/year 作为格式字符串。如果你修复它有效:
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"
我正在以字符形式读取数据,如下所示:
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.
这是怎么回事?如何将所有日期从字符转换为日期?
数据来自 excel sheet 保存为 csv,看起来像这样(日期和情节变化):
|情节|日期|
|------|--------|
|米13| 2016 年 9 月 19 日|
|米23| 2016 年 9 月 19 日|
|所以14| 2016 年 10 月 26 日|
|米12| 2016 年 11 月 21 日|
首先,您的数据:
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>
您的数据采用 month/day/year 格式,但您使用 day/month/year 作为格式字符串。如果你修复它有效:
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"