gpt4 book ai didi

r - R数据框中多列的百分比分组

转载 作者:行者123 更新时间:2023-12-05 00:48:06 24 4
gpt4 key购买 nike

我有一个如下的数据框结构:

No    A    B    C    D    Group
=========================
1 2 3 1 4 GA
2 4 5 3 1 GA
3 8 6 1 3 GA
4 6 1 3 2 GB
5 8 9 1 2 GB
6 8 1 9 1 GB

我想按各自的组计算每个单元格的百分比。

有没有比循环更快的方法?尺寸真的很大,所以我需要一个更快的方法。

我的预期结果:

No    A      B       C       D    Group
=======================================
1 2/14 3/14 1/5 4/8 GA
2 4/14 5/14 3/5 1/8 GA
3 8/14 6/14 1/5 3/8 GA
4 6/22 1/11 3/13 2/5 GB
5 8/22 9/11 1/13 2/5 GB
6 8/22 1/11 9/13 1/5 GB

最佳答案

您可以使用 dplyr 包。

对于一列:

df %>%
group_by(Group) %>%
mutate(A_percent = A / sum(A)) # could use `A` instead of `A_percent`

同时对于多个列,您可以执行以下操作,这将按照您的要求覆盖现有列:

df %>%
group_by(Group) %>%
mutate_at(vars(A:D), funs(./sum(.)))

请注意,如果您想创建新列而不是覆盖,您可以这样做:

df %>%
group_by(Group) %>%
mutate_at(vars(A:D), funs("percent" = ./sum(.)))

这将创建带有“_percent”后缀的新列。

如果您有很多列,您可能需要一种更强大的方法来选择要处理的列。看看the list of select helpers you can use in vars(...)。你也可以简单地使用数字索引。

关于r - R数据框中多列的百分比分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477453/

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