gpt4 book ai didi

r - 使用data.table根据另一列中的类别计算出现的百分比

转载 作者:行者123 更新时间:2023-12-04 18:36:38 24 4
gpt4 key购买 nike

最近我在 R 中使用 data.table,它非常流行和高效。目前我遇到了一个我认为可以使用 data.table 解决的问题。

我有一个这样的数据集:

event | group_ind 
1 | group1
1 | group1
1 | group1
2 | group1
2 | group1
1 | group2
1 | group2
2 | group2
2 | group3
2 | group3

现在我想知道每个组中发生事件 1 的百分比。这个数据集的结果很明显:组 1 中的事件 1 为 60%,组 2 中为 67%,组 3 中为 0。实际上,数据集有更多的观察结果,具有 2 种以上的事件类型,并且行未按特定顺序排序。我可以在 R 中以一种非常虚拟的方式得到我想要的东西(通过计算事件列中的发生次数除以每组中的总观察数),但我认为应该有一种更巧妙的方法来做到这一点。

所以我想要的结果是这样的:
 event | group_ind | percentage
1 | group1 | 0.6
2 | group1 | 0.4
1 | group2 | 0.67
2 | group2 | 0.33
1 | group3 | 0
2 | group3 | 100

我希望这可以在 data.table 中完成。非常感谢您的帮助。

最佳答案

一个简单的解决方案就是

setDT(DT)[, .(event = 1:2, percentage = tabulate(event)/.N), by = group_ind]
# group_ind event percentage
# 1: group1 1 0.6000000
# 2: group1 2 0.4000000
# 3: group2 1 0.6666667
# 4: group2 2 0.3333333
# 5: group3 1 0.0000000
# 6: group3 2 1.0000000

虽然更通用的解决方案是使用 uniqueevent (也可以预订 - 正如@EdM 所建议的那样)。
setDT(DT)[order(event), .(event = unique(event), percentage = tabulate(event)/.N), by = group_ind]

关于r - 使用data.table根据另一列中的类别计算出现的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33946334/

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