我在数据框架中有以下格式的日期格式:
Jan-85
Apr-99
1-Nov
Feb-96当我看到typeof(df$col)时,我得到的答案是“整数”。
实际上,当我看到excel中的格式时,它是m/d/yyyy格式的。我试图把这个格式转换成R。我所有的努力都产生了NA。
我尝试了parse_date_time函数。我和as.character一起尝试过as.character。我试过as.POSIXct,但一切都给了我NA。
我的试验结果如下,一切都失败了:
as.Date.numeric(df$col,"m%d%Y")
transform(df$col, as.Date(as.character(df$col), "%m%d%Y"))
as.Date(df$col,"m%d%Y")
as.POSIXct.numeric(as.character(loan_new$issue_d), format="%Y%m%d")
as.POSIXct.date(as.character(df$col), format="%Y%m%d")
mdy(df$col)
parse_date_time(df$col,c("mdy"))如何将此格式转换为日期格式?我用过润滑油包装parse_date_time和mdy包装。
dput输出低于
Label <- factor(c("Apr-08",
"Apr-09", "Apr-10", "Apr-11", "Aug-07", "Aug-08", "Aug-09", "Aug-10",
"Aug-11", "Dec-07", "Dec-08", "Dec-09", "Dec-10", "Dec-11", "Feb-08",
"Feb-09", "Feb-10", "Feb-11", "Jan-08", "Jan-09", "Jan-10", "Jan-11",
"Jul-07", "Jul-08", "Jul-09", "Jul-10", "Jul-11", "Jun-07", "Jun-08",
"Jun-09", "Jun-10", "Jun-11", "Mar-08", "Mar-09", "Mar-10", "Mar-11",
"May-08", "May-09", "May-10", "May-11", "Nov-07", "Nov-08", "Nov-09",
"Nov-10", "Nov-11", "Oct-07", "Oct-08", "Oct-09", "Oct-10", "Oct-11",
"Sep-07", "Sep-08", "Sep-09", "Sep-10", "Sep-11"))发布于 2017-06-23 12:33:00
当您错误指定格式时,通常会得到NA。你就是这么做的。也就是说,如果您的数据看起来确实像您给出的第一个示例,那么就不可能简单地将其转换为日期。你有两种不同的格式,一种是月-年,另一种是日-月.
如果更新的日期(即Dec-11)是正确的格式,则使用as.Date的format参数如下:
date <- "Dec-11"
as.Date(date, format = "%b-%d")
# [1] "2017-12-11"或者在您的示例数据上:
as.Date(Label, format = "%b-%d")
# [1] "2017-04-08" "2017-04-09" "2017-04-10" "2017-04-11" "2017-08-07" "2017-08-08"
# [7] "2017-08-09" "2017-08-10" "2017-08-11" "2017-12-07" "2017-12-08" "2017-12-09"如果您想转换类似Jan-85的内容,您必须决定该日期的月份的哪一天。假设我们每个月的第一个月,然后你可以做:
x <- "Jan-85"
xd <- paste0("1-",x)
as.Date(xd, "%d-%b-%y")
# [1] "1985-01-01"有关格式代码的更多信息可以在?strptime上找到。
请注意,R将自动将今年添加为年份。它必须这样做,否则它不能指定日期。如果您没有一个月中的一天(如1月-85),转换到日期是不可能的,因为底层的POSIX算法没有所有必要的信息。
还请记住,只有当您的地区设置为英语时,这才有效。否则,您的操作系统很有可能无法正确识别月份缩写。这样做,如:
Sys.setlocale(category = "LC_TIME", locale = "English_United Kingdom")如果必须的话,以后可以将其设置为原来的设置,或者重新启动R会话以重置区域设置。
注意::请仔细检查哪些地区标记对您的操作系统有效。上面的示例在Windows上工作,但在Linux或Mac上都没有保证。
为什么你看到整数
这些字符串值是整数类型,这是因为R在读取数据帧时自动将字符向量转换为因子。所以typeof()返回integer,因为这是一个因子的内部表示。
https://stackoverflow.com/questions/44721152
复制相似问题