向 r-dataframe 添加具有相对频率的列

问题描述 投票:0回答:1

我在 R 中有一个数据框,想要为每个变量添加一个具有相对频率的列。 这是我正在使用的示例数据框:

df <- data.frame(
  Ausprägung = c("Obs1", "Obs2", "Obs3", "Obs4", "Total"),
  Anzahl = c(100, 100, 100, 100, 400)
)

我想添加一列包含相对频率的列,并具有如下所示的输出数据框

Ausprägung 安扎尔 相对。频率
观测1 100 0.25
观测2 100 0.25
观测3 100 0.25
观测4 100 0.25
总计 400 -

我尝试使用 prop.table() 函数,但陷入困境,因为我想使用数据框,而 prop.table() 函数似乎只支持表对象。我发现了一些有关相对频率计算的其他问题,但似乎都不适合我的情况。

r dataframe frequency-analysis
1个回答
0
投票

这应该有效:

df <- data.frame(
  Ausprägung = c("Obs1", "Obs2", "Obs3", "Obs4", "Total"),
  Anzahl = c(100, 100, 100, 100, 400)
)

transform(df, rel.frequency = ifelse(Ausprägung == "Total", NA, Anzahl / sum(Anzahl[Ausprägung != "Total"])))
#>   Ausprägung Anzahl rel.frequency
#> 1       Obs1    100          0.25
#> 2       Obs2    100          0.25
#> 3       Obs3    100          0.25
#> 4       Obs4    100          0.25
#> 5      Total    400            NA

创建于 2023-11-09,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.