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

如何为R语言数据框添加相对频率列?

给数据框添加相对频率列的R语言实现

基础R实现方案

直接通过提取总数、条件赋值的方式生成目标列:

  1. 定义示例数据框:
df <- data.frame(
  Ausprägung = c("Obs1", "Obs2", "Obs3", "Obs4", "Total"),
  Anzahl = c(100, 100, 100, 100, 400)
)
  1. 提取总数并计算相对频率:
# 获取Total行的数值作为计算分母
total_count <- df$Anzahl[df$Ausprägung == "Total"]

# 添加相对频率列,Total行设为"-"
df$`rel. frequency` <- ifelse(df$Ausprägung == "Total", "-", df$Anzahl / total_count)

执行后得到的结果完全符合需求:

AusprägungAnzahlrel. frequency
Obs11000.25
Obs21000.25
Obs31000.25
Obs41000.25
Total400-

dplyr实现方案(适合复杂数据集)

如果习惯使用tidyverse工具链,可用dplyr的mutate和case_when完成:

library(dplyr)

df <- df %>%
  # 提取Total行的数值作为临时变量
  mutate(total_val = Anzahl[Ausprägung == "Total"]) %>%
  # 条件生成相对频率列
  mutate(`rel. frequency` = case_when(
    Ausprägung == "Total" ~ "-",
    TRUE ~ as.character(Anzahl / total_val)
  )) %>%
  # 移除临时列
  select(-total_val)

补充说明

prop.table()确实仅适用于table对象,无法直接处理数据框的列计算,直接通过数值运算的方式更贴合当前需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:22:12