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

如何用tidyverse管道函数计算两组数据的比值?

使用tidyverse管道实现分组比值计算

问题说明

现有如下格式的原始数据,需要计算每个Var1对应的Group 0的Value除以Group 1的Value,生成以Var1为行、Div为列的结果表,希望用tidyverse的管道函数完成该操作。

原始数据

Var1 Group Value
a    0     1 
b    0     2
c    0     3
a    1     2
b    1     10
c    1     9

预期结果

Var1 Div
a    .5
b    .2
c    .3333

解决方案

可以借助tidyverse中的dplyr和tidyr包,通过链式管道一步完成:

library(tidyverse)

# 假设你的原始数据存储在数据框df中
df %>%
  # 将长格式数据转为宽格式,Group的0和1作为列名
  pivot_wider(names_from = Group, values_from = Value) %>%
  # 计算Div列:Group0的值除以Group1的值
  mutate(Div = `0` / `1`) %>%
  # 只保留需要的两列
  select(Var1, Div) %>%
  # 按预期结果保留小数位数(可选)
  mutate(Div = round(Div, 4))

代码解释

  • pivot_wider:把长表转为宽表,让每个Var1对应一行,同时将Group的两个取值(0和1)转为列,存储对应的Value
  • mutate:新增Div列,完成0组值除以1组值的计算
  • select:筛选出最终需要的Var1和Div列
  • 最后的round函数用于调整小数位数,匹配预期结果的格式,可根据实际需求修改保留的位数

内容的提问来源于stack exchange,提问作者William M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:23:09