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

如何在R中按州对指定列应用函数计算均值

按州计算犯罪率均值的apply类函数实现方案

方法1:使用tapply(最简洁的apply家族函数)

tapply是R中专门用于按分组对向量执行函数操作的工具,直接满足需求:

# 读取数据集(确保文件在当前工作目录)
crime_data <- read.csv("state_crime.csv")

# 按州分组计算crimes列的均值
state_crime_mean <- tapply(crime_data$crimes, crime_data$state, mean)

# 若存在缺失值,需添加na.rm参数避免结果为NA
# state_crime_mean <- tapply(crime_data$crimes, crime_data$state, mean, na.rm = TRUE)

执行后得到一个命名向量,向量名称为州名,对应值为该州2000-2019年的crimes均值。

方法2:使用split + lapply(更灵活的组合)

如果后续需要对每个州的数据做更多扩展操作,这种拆分+遍历的方式更适配:

# 按州拆分数据集为列表,每个元素对应一个州的完整数据
crime_state_list <- split(crime_data, crime_data$state)

# 遍历列表,计算每个州的crimes均值
state_crime_mean_list <- lapply(crime_state_list, function(sub_df) {
  mean(sub_df$crimes, na.rm = TRUE) # 建议处理缺失值
})

# 转换为数据框格式(可选,方便后续分析)
state_crime_mean_df <- data.frame(
  state = names(state_crime_mean_list),
  mean_crimes = unlist(state_crime_mean_list)
)

split将原始数据按state拆分为子数据框组成的列表,lapply遍历每个子数据框执行均值计算,最后可通过unlist将结果转换为结构化数据框。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:55:18