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

如何用R语言管道函数实现行与行的除法运算

解决方案:用管道操作新增'DB Q'行(BH Q/SI)

核心逻辑

rowwise()是单行独立处理,没法跨行调用BH Q和SI两行的数据做除法,所以换用dplyr的summarize()+across()组合,配合管道完成跨行计算,最后绑定新行,完美适配后续新增更多行的需求。

示例代码

先模拟符合你需求的数据结构(如果你的数据列名/结构不同,只需调整对应参数):

library(tidyverse)

# 模拟原始数据框:category是行标识,后续列是月份数值
df <- tibble(
  category = c("BH Q", "SI"),
  Jan = c(10, 2),
  Feb = c(20, 4),
  Mar = c(30, 6)
)

执行管道操作新增目标行:

df_new <- df %>%
  # 计算每个数值列的BH Q/SI比值,生成新行
  summarize(
    category = "DB Q",
    across(where(is.numeric), ~ .[category == "BH Q"] / .[category == "SI"])
  ) %>%
  # 将新行绑定到原始数据框(如果要把新行放前面,调换bind_rows的参数顺序即可)
  bind_rows(df, .)

# 查看结果
print(df_new)

代码说明

  • across(where(is.numeric), ~ .[category == "BH Q"] / .[category == "SI"]):遍历所有数值列(月份列),对每个列提取BH Q行的值除以SI行的值
  • summarize()生成包含'DB Q'标识和计算结果的单行数据框
  • bind_rows()把新行合并到原数据,全程用管道衔接,后续新增其他行只需在管道后继续追加类似逻辑即可

执行结果

# A tibble: 3 × 4
  category   Jan   Feb   Mar
  <chr>    <dbl> <dbl> <dbl>
1 BH Q         10    20    30
2 SI            2     4     6
3 DB Q          5     5     5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:25:18