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

如何在R中按列序号而非列名计算指定列的均值

计算数据框固定列(第26列)的均值

问题背景

数据框中第26列为最新年月的数值数据(列名随月份动态变化,如Dec-23、Jan-24),需计算该列均值,无需手动修改列名。

数据框结构示例:

OrgCode...Oct-23Nov-23Dec-23
OrgA...0.780.560.76
OrgB...0.360.460.74
OrgC...0.480.660.96

错误尝试与原因

尝试1

z_name = names(df[,26])
z = df$z_name

错误提示:

Warning message:
Unknown or uninitialised column: z_name

原因:df$z_name会按字面字符串"z_name"查找列,而非变量z_name存储的列名,需用[[ ]]而非$引用变量存储的列名。另外names(df[,26])写法冗余,正确获取第26列列名应为names(df)[26]。

尝试2

mean.df.latest = df %>% mean(.[[26]])

错误提示:

Warning: argument is not numeric or logical: returning NA

原因:管道会将整个数据框传给mean(),mean()默认处理数据框整体而非单列向量,导致类型不匹配报错。需先提取单列向量再计算均值。

正确解决方案

方法1:直接通过列索引提取向量计算

# 提取第26列向量并计算均值,na.rm=TRUE忽略缺失值
mean_latest = mean(df[[26]], na.rm = TRUE)

方法2:先获取列名再提取计算

# 获取第26列的列名
z_name = names(df)[26]
# 通过列名提取向量计算均值
mean_latest = mean(df[[z_name]], na.rm = TRUE)

方法3:使用dplyr管道的正确写法

library(dplyr)
mean_latest = df %>% 
  pull(26) %>%  # 提取第26列的数值向量
  mean(na.rm = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:37:24