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

R语言如何按index索引列聚合dataframe计算指定列均值?

问题原因

你查询value列类型时用了typeof(),该函数返回的是对象底层存储类型,因子类(factor)数据的底层存储为整数,因此会返回integer结果,实际上你的value列是因子类型,无法直接计算均值,因此返回NA。
你可以运行下方代码验证类型:

class(test_df$value)

大概率返回结果为factor。

解决步骤

方法1:继续使用base R的aggregate函数

先将value列转换为数值型,注意因子转数值需要先转字符再转数值,否则会直接提取底层的整数索引值:

# 转换value列类型
test_df$value <- as.numeric(as.character(test_df$value))
# 执行聚合计算,增加na.rm=TRUE避免存在缺失值时返回NA
test_df_ag <- stats::aggregate(test_df[1:2], by = test_df[3], FUN = mean, na.rm = TRUE)

方法2:使用dplyr包实现(代码可读性更高)

library(dplyr)
test_df_ag <- test_df %>%
  # 转换value列类型
  mutate(value = as.numeric(as.character(value))) %>%
  # 按index分组
  group_by(index) %>%
  # 计算两列的均值
  summarise(
    value = mean(value, na.rm = TRUE),
    frequency = mean(frequency, na.rm = TRUE)
  )

如果转换类型后value列出现NA,说明原始数据中存在非数值内容,你可以运行test_df[is.na(as.numeric(as.character(test_df$value))), ]定位异常行,处理后再计算即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 03:06:10