含NA的Date列返回数字,如何将其转为日期类型?
解决数据框中含NA的日期列显示为数字的问题
问题出在你混合了逻辑型NA和Date对象,R会自动将Date类型强制转换为数值(因为Date本质是从1970-01-01开始计数的整数),导致数据框的列变成数值型。下面是两种解决方案:
方案1:创建日期类型的缺失值
直接用as.Date(NA)代替普通的NA,这样整个向量都会保持Date类型:
# 先加载lubridate包(如果用today()的话) library(lubridate) asdd <- data.frame(a = c(as.Date(NA), today()), b = c(2, 3)) asdd # a b # 1 NA 2 # 2 2024-05-20 3
如果不用lubridate,换成base R的Sys.Date()也可以:
asdd <- data.frame(a = c(as.Date(NA), Sys.Date()), b = c(2, 3))
方案2:将已有的数值列转换回日期类型
如果已经生成了数值型的列,可以用as.Date()把数字转换为日期,指定原点为"1970-01-01"(R中日期的默认原点):
# 假设你已经有了那个asdd数据框 asdd$a <- as.Date(asdd$a, origin = "1970-01-01") asdd # a b # 1 NA 2 # 2 2024-05-20 3
另外注意:你代码里的as.Date(today(), "%m/%d/%Y")是多余的,因为today()本身就返回Date对象,不需要再用as.Date()格式化。
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

