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

R读取XLSX天气时间序列时不同时间点被误判为重复

问题排查与解决方法

  • 首先明确duplicated()函数的核心逻辑:该函数返回的是「当前位置的元素是否已经在序列的前面位置出现过」,输出的两个重复值实际对应两组独立的重复时间对:43253.50(对应2018-06-02 12:00 UTC)和43253.54(对应2018-06-02 13:00 UTC)各出现了至少2次,并非两个相差1小时的时间被互相判定为重复,与时区、夏令时无关。
  • 优先排查原始Excel源文件:直接在Excel中筛选对应两个时间点的所有行,绝大多数此类问题是源数据本身存在重复条目,常见诱因包括数据导出时的拼接错误、气象站点重复上报数据。
  • 若源文件无重复,排查浮点数精度问题:单独提取数值无法复现问题,是因为R默认浮点数打印仅显示前几位有效数字,肉眼可见的打印值和底层存储的实际值可能存在差异,可用以下代码校验:
# 调高浮点数打印精度,显示底层真实存储值
options(digits = 20)
# 输出所有和重复值相等的条目,确认是否确实完全相等
df$Time[df$Time %in% df$Time[duplicated(df$Time)]]
# 校验相同名义值的数值差是否小于浮点精度阈值
diff(df$Time[df$Time == df$Time[duplicated(df$Time)[1]]]) < .Machine$double.eps
  • 确认重复后的去重方案:如果确定为无效重复,可直接按时间列去重,保留第一次出现的条目即可:
# 基础R方法
df_unique <- df[!duplicated(df$Time), ]

# dplyr方法(保留其他所有列)
library(dplyr)
df_unique <- df %>% distinct(Time, .keep_all = TRUE)

内容的提问来源于stack exchange,提问作者Texanum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 22:15:02