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

如何基于mtcars数据框的cyl与gear唯一组合生成均值数据框及排障

问题解答

1. 创建包含cyl和gear唯一组合的mpg、disp平均值的数据框

分享两种实用实现方法:

方法一:基础R的aggregate函数

直接指定需聚合的变量,按cyl和gear分组计算均值:

# 生成包含分组均值的数据框
result_df <- aggregate(cbind(mpg, disp) ~ cyl + gear, data = mtcars, mean)

输出结果包含cyl、gear、mpg、disp四列,其中后两列对应分组的平均值。

方法二:dplyr包(tidyverse风格)

分组逻辑更直观,还能自定义均值列名:

library(dplyr)

result_df <- mtcars %>%
  group_by(cyl, gear) %>%
  summarise(avg_mpg = mean(mpg), avg_disp = mean(disp), .groups = "drop")

.groups = "drop"用于取消分组状态,得到普通数据框。


2. 修复生成cyl、gear、avg_mpg数据框的问题

你当前代码aggregate(mpg~am*cyl, data=mtcars, mean)的核心问题是分组变量错误:你写的是am*cyl(按am和cyl组合分组),但实际需要的是cyl和gear的组合,修改分组部分即可解决:

正确基础R代码

avg_mpg_df <- aggregate(mpg ~ cyl + gear, data = mtcars, mean)
# 可选:重命名列名更清晰
colnames(avg_mpg_df) <- c("cyl", "gear", "avg_mpg")

更直接的dplyr写法

library(dplyr)

avg_mpg_df <- mtcars %>%
  group_by(cyl, gear) %>%
  summarise(avg_mpg = mean(mpg), .groups = "drop")

执行后就能得到包含cyl、gear、avg_mpg三列的数据框。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:08:09