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

Adding a column with relative frequencys to a r-dataframe

提问人:KingCooper 提问时间:11/9/2023 最后编辑:moodymudskipperKingCooper 更新时间:11/9/2023 访问量:22

问:

我在 R 中有一个数据帧,想为每个变量添加一个具有相对频率的列。 以下是我正在处理的示例数据帧:

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

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

Ausprägung 安扎尔 相关频率
Obs1型 100 0.25
Obs2型 100 0.25
Obs3型 100 0.25
Obs4的 100 0.25
400 -

我尝试使用 prop.table() 函数,但卡住了,因为我想使用 dataframe,而 prop.table() 函数似乎只支持表对象。我发现了一些关于相对频率计算的其他问题,但似乎没有一个适合我的情况。

R 数据帧 频率分析

评论


答:

1赞 moodymudskipper 11/9/2023 #1

这应该有效:

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