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

R中使用group_by计算列月度平均值返回NA问题的解决方法问询

问题解决方法

核心问题大概率由缺失值参数缺失、依赖包未加载、时间列类型异常三类原因导致,可按以下步骤修复:

步骤1:确认依赖包已加载

floor_date是lubridate包的专属函数,group_by/summarize来自dplyr,运行代码前先完成包加载:

# 未安装的话先执行 install.packages(c("dplyr","lubridate"))
library(dplyr)
library(lubridate)

步骤2:给mean函数添加缺失值忽略参数

R的mean()函数默认遇到缺失值就返回NA,只要你的USDTRY列存在任意一个缺失值,整组聚合结果就会变为NA,添加na.rm = TRUE参数即可解决:

data %>% 
  group_by(month = floor_date(Timestamp, unit = "month")) %>%
  summarize(USDTRY = mean(USDTRY, na.rm = TRUE)) -> data1

步骤3:批量计算所有列的月度平均(可选优化)

如果需要对所有数值列计算月度平均,不用逐个列写规则,直接用across批量处理即可:

data %>% 
  group_by(month = floor_date(Timestamp, "month")) %>%
  # 对所有数值列计算均值,自动忽略缺失值
  summarize(across(where(is.numeric), ~mean(.x, na.rm = TRUE))) -> data1

异常排查补充

如果修改后仍有问题,先执行以下代码检查基础数据是否正常:

# 检查Timestamp列类型是否为POSIXct/POSIXt,若不是先转格式
class(data$Timestamp)
# 如果是字符类型,执行转换:
# data$Timestamp <- as.POSIXct(data$Timestamp, tz = "UTC")

# 检查USDTRY列的缺失值数量
sum(is.na(data$USDTRY))

另外你提到的dput输出中Timestamp为数值的情况属于正常现象:POSIXct类型的时间本质就是存储为1970年1月1日以来的秒数,View时自动格式化显示为日期是R的默认渲染逻辑,不影响计算。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:15:01