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

在R中如何按另一变量分组计算指定列的方差

R按分组计算方差的实现方法

首先你可以用如下代码构造和你提供的示例一致的数据框,实际使用时替换为你自己的数据集即可:

df <- data.frame(
  Id = rep(c(1,2,3,4), times = c(4,2,3,2)),
  intensity = c(11,9,6,7,4,6,8,8,9,3,6)
)

方法1:基础R实现(无需安装额外包)

使用内置的aggregate函数直接完成分组统计:

var_by_id <- aggregate(intensity ~ Id, data = df, FUN = var)

输出结果中每行对应一个Id的intensity方差,若需要忽略缺失值计算,将函数参数改为FUN = function(x) var(x, na.rm = TRUE)即可。

方法2:dplyr实现(tidyverse生态常用)

代码可读性更高,是目前R数据分析的主流写法:

# 未安装dplyr请先执行 install.packages("dplyr")
library(dplyr)

var_by_id <- df %>%
  group_by(Id) %>%
  summarise(intensity_variance = var(intensity, na.rm = TRUE))

方法3:data.table实现(适合大数据量场景)

运算速度远高于前两种方法,适合超大数据集的分组统计需求:

# 未安装data.table请先执行 install.packages("data.table")
library(data.table)

# 将数据框转为data.table格式
setDT(df)
var_by_id <- df[, .(intensity_variance = var(intensity, na.rm = TRUE)), by = Id]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:24:02