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

R语言rowwise按行汇总生成空值,期望按列前缀求均值生成新列

解决方法

你的代码错误地在mutate()中嵌套了summarise(),导致结构混乱,生成了空的<rowwise_df[,0]>列。以下是两种符合需求的正确实现方式:

方案一:直接分组计算同前缀列的均值

适用于对每个Species分组,计算该组内所有Sepal开头列的均值(合并为Sepal列),同理处理Petal列:

library(dplyr)

iris %>%
  group_by(Species) %>%
  summarise(
    Sepal = rowMeans(across(starts_with("Sepal"))),
    Petal = rowMeans(across(starts_with("Petal"))),
    .groups = "drop"
  )

方案二:先求和再计算均值(匹配示例数值逻辑)

如果需要先按Species对各列求和,再对同前缀的求和结果取均值:

library(dplyr)

iris %>%
  aggregate(. ~ Species, data = ., sum) %>%
  rowwise() %>%
  mutate(
    Sepal = mean(c(Sepal.Length, Sepal.Width)),
    Petal = mean(c(Petal.Length, Petal.Width))
  ) %>%
  ungroup() %>%
  select(Species, Sepal, Petal)

执行后会得到你期望的格式:

# A tibble: 3 × 3
  Species    Sepal Petal
  <fct>      <dbl> <dbl>
1 setosa      210.  41.5
2 versicolor  238. 114. 
3 virginica   272. 170. 

错误原因说明

原代码中group_by()后嵌套mutate(summarise(...))是错误用法:summarise()用于生成分组汇总结果,而mutate()会保留原数据行数,二者逻辑冲突,最终导致空列出现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:56:09