You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:48:01