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

在R语言中按ID分组计算斜率的实现方法

按ID计算LogB随Block变化的斜率

下面是几种在R中实现按ID分组计算斜率的方法,最终都会输出每个ID对应的单独斜率列:

方法1:tidyverse风格(dplyr + broom)

适合习惯使用tidyverse工具链的用户,代码可读性强:

# 加载依赖包
library(dplyr)
library(broom)

# 分组计算斜率
slope_result <- df %>%
  group_by(ID) %>%
  summarise(slope = coef(lm(LogB ~ Block, data = cur_data()))[["Block"]])

# 查看结果
slope_result

说明:cur_data()用于指代当前分组的数据集,coef(lm(...))[["Block"]]会提取线性模型中Block对应的系数,也就是我们需要的斜率。

方法2:data.table(高效处理大数据)

如果你的数据集规模较大,data.table的运算效率更高:

# 加载包并转换数据格式
library(data.table)
setDT(df)

# 分组计算斜率
slope_result <- df[, .(slope = coef(lm(LogB ~ Block))[["Block"]]), by = ID]

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

不想安装额外包的话,用基础R的by()函数也能实现:

# 分组计算斜率并整理结果
slope_list <- by(df, df$ID, function(x) coef(lm(LogB ~ Block, data = x))[2])
slope_result <- data.frame(ID = names(slope_list), slope = unlist(slope_list))

针对你提供的示例数据,两个ID的斜率结果一致,为0.427(因LogB随Block呈完美线性增长)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:13:17