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

R语言如何实现数据框每行数值除以指定列col4的对应行值

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

推荐使用sweep函数实现按行批量运算,逻辑清晰不易出错:

# 按行将所有列除以对应行的col4值
result <- sweep(data_frame, MARGIN = 1, STATS = data_frame$col4, FUN = "/")
# 按需对col1-col3保留2位小数,匹配期望输出格式
result[, 1:3] <- round(result[, 1:3], 2)

也可以用转置运算实现更简洁的写法:

result <- as.data.frame(t(t(data_frame) / data_frame$col4))
result[, 1:3] <- round(result[, 1:3], 2)

方法2:dplyr包实现(适合tidyverse生态用户)

如果日常使用tidyverse系列工具,可以用行分组+跨列突变的写法,可读性更高:

library(dplyr)
result <- data_frame %>%
  rowwise() %>% # 按行分组
  mutate(across(col1:col4, ~ .x / col4)) %>% # 所有列除以当前行的col4值
  ungroup() %>% # 取消行分组避免后续运算出错
  mutate(across(col1:col3, ~ round(.x, 2))) # 保留两位小数

以上两种方法输出的结果都和你给出的期望输出完全匹配,如果数据框中存在非数值列,操作前需先筛选出数值列再执行除法运算,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:48:01