R语言导入Excel数据后date1、date2日期字段显示异常问题咨询
问题根因
- R中矩阵只能存储同类型数据,你将日期、字符串、数值等不同类型的字段存入矩阵时,日期格式会被强制转换为对应的Unix时间戳数值,所有元素统一转为字符类型,因此展示为数字串。
- 你手动遍历日期拼接结果的写法效率低,且容易出现空匹配导致的NA值。
修复方法
推荐方案(无需手动循环)
使用dplyr分组统计,可自动保留所有字段的原有类型:
# 加载依赖包 library(readxl) library(dplyr) # 读取并过滤数据 df <- read_excel('C:/Users/Jose/Desktop/df.xlsx') df <- subset(df, date2 < date1) # 按date2分组统计 df_grouped <- df %>% group_by(date2) %>% summarise( Id = dplyr::first(Id), date1 = dplyr::first(date1), Week = dplyr::first(Week), D = dplyr::first(D), DR01 = sum(DR01, na.rm = TRUE) ) %>% # 补全日期间隔,空缺的DR01填充为0 tidyr::complete(date2 = seq.Date(min(date2), max(date2), by = "1 day"), fill = list(DR01 = 0)) # 查看结果,date1、date2均保留日期格式 head(df_grouped)
兼容原代码的修复方案
如果你要保留原有矩阵写法,可在最后将时间戳转换为日期格式:
# 将矩阵转为数据框,转换时间戳为日期 df_grouped <- as.data.frame(df_grouped) df_grouped$date1 <- as.Date(as.numeric(as.character(df_grouped$date1)), origin = "1970-01-01") df_grouped$date2 <- as.Date(as.numeric(as.character(df_grouped$date2)), origin = "1970-01-01")
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

