我在 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() 函数似乎只支持表对象。我发现了一些有关相对频率计算的其他问题,但似乎都不适合我的情况。
这应该有效:
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