gpt4 book ai didi

r - 在 R 中查找汇总列的相对频率

转载 作者:行者123 更新时间:2023-12-05 09:29:40 26 4
gpt4 key购买 nike

我需要获取 R 中汇总列的相对频率。我使用 dplyr 的汇总来查找每个分组行的总数,如下所示:

data %>%
group_by(x) %>%
summarise(total = sum(dollars))

x total
<chr> <dbl>
1 expense 1 3600
2 expense 2 2150
3 expense 3 2000

但现在我需要为每个总行的相对频率创建一个新列以获得此结果:

     x                   total     p
<chr> <dbl> <dbl>
1 expense 1 3600 46.45%
2 expense 2 2150 27.74%
3 expense 3 2000 25.81%

我已经试过了:

data %>%
group_by(x) %>%
summarise(total = sum(dollars), p = scales::percent(total/sum(total))

还有这个:

data %>%
group_by(x) %>%
summarise(total = sum(dollars), p = total/sum(total)*100)

但结果总是这样:

     x                   total     p
<chr> <dbl> <dbl>
1 expense 1 3600 100%
2 expense 2 2150 100%
3 expense 3 2000 100%

问题似乎是可能影响结果的汇总总计列。有什么想法可以帮助我吗?谢谢

最佳答案

由于分组,您得到 100%。但是,在您总结之后,dplyr 将放弃一级分组。意思是如果你例如执行 mutate() 之后,您将获得所需的结果:

library(dplyr)

data <- tibble(
x = c("expense 1", "expense 2", "expense 3"),
dollars = c(3600L, 2150L, 2000L)
)


data %>%
group_by(x) %>%
summarise(total = sum(dollars)) %>%
mutate(p = total/sum(total)*100)


# A tibble: 3 x 3
x total p
<chr> <int> <dbl>
1 expense 1 3600 46.5
2 expense 2 2150 27.7
3 expense 3 2000 25.8

关于r - 在 R 中查找汇总列的相对频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70525899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com