如何将R中无空格字符格式的日期正确转换为标准Date类型
问题原因
- 你当前输入的是字符格式的日期,
origin参数仅用于数值型日期(代表距离起始日期天数的数字)的转换,字符型日期转换不需要设置该参数 - 你未指定输入字符的日期格式,R会自动将
"20130402"这类字符串强制转为数值20130402,再叠加你设置的起始日期,最终得到了远超正常范围的错误日期 - 若使用dplyr管道修改数据框列,需要将转换逻辑放在
mutate()函数内,直接在管道后调用as.Date()无法正确修改指定列
修正方案
方案1:基础as.Date()指定格式
通过format参数声明输入字符串的结构:%Y代表4位年份,%m代表2位月份,%d代表2位日期
library(dplyr) dataframe <- dataframe %>% mutate(Date = as.Date(Date, format = "%Y%m%d"))
方案2:使用lubridate包的专用函数
lubridate包的ymd()函数可以自动识别年-月-日顺序的无分隔日期,不需要手动指定格式,容错率更高
library(dplyr) library(lubridate) dataframe <- dataframe %>% mutate(Date = ymd(Date))
转换完成后可以运行class(dataframe$Date)验证类型,返回结果为Date即为转换成功。
内容的提问来源于stack exchange,提问作者Ahmet Atilla Colak
相关产品推荐
相关产品推荐

