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

如何基于区分列对数据框的成对行执行运算(R语言)

用dplyr计算分组差值的两种方法

方法一:分组后直接提取对应值计算

利用dplyr的分组和汇总功能,直接在每组内取出level=2和level=1的val值做差:

library(dplyr)

dfDif <- df %>%
  group_by(color, hue) %>%
  summarise(dif = val[level == 2] - val[level == 1], .groups = "drop")

# 输出结果
dfDif

执行后得到的结果与预期完全一致:

# A tibble: 6 × 3
  color hue     dif
  <chr> <chr> <dbl>
1 b     l         1
2 b     d         7
3 g     l         8
4 g     d         3
5 r     l         2
6 r     d         4

方法二:先转宽表再计算差值

先通过tidyr::pivot_wider将level列的两个值展开为单独列,再直接做减法,逻辑更直观:

library(dplyr)
library(tidyr)

dfDif <- df %>%
  pivot_wider(names_from = level, values_from = val) %>%
  mutate(dif = `2` - `1`) %>%
  select(color, hue, dif)

dfDif

这个方法同样能得到符合要求的结果,且步骤清晰,适合需要查看原始level对应值的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:05:21