gpt4 book ai didi

r - ddply 在 R : for each group, 中找到特定变量的出现百分比

转载 作者:行者123 更新时间:2023-12-04 09:30:27 25 4
gpt4 key购买 nike

我有一个包含两列、user_type 和滞后响应时间(以天为单位)的数据集:

          user_type imp_date lag 
Consumer 20130613 1
Consumer 20130612 2
Consumer 20130611 3
Consumer 20130612 3
Producer 20130610 10
Producer 20130614 5
Producer 20130613 7

我想计算每个 user_type 的延迟百分比分解。这是我想要的输出示例:
user_type        lag    percentage
--------- --- ----------
Consumer 1 0.25
Consumer 2 0.25
Consumer 3 0.5
Producer 5 0.333
Producer 7 0.333
Producer 10 0.333

延迟时间响应的百分比分割是相对于每个 user_type 组的总数计算的。

具体来说,我想在 pylr 中使用 ddply,我有一些类似的东西:
a = ddply(data, .(user_type), summarize, table(lag)/length(lag))

但它没有给我滞后时间响应列。

附言我最初的动机是为不同的用户类型绘制这些滞后分布,我有:
p <- ggplot(data, aes(x = lag, fill = factor(user_type))) 
p + geom_bar(aes(y = (..count..)/sum(..count..)))

但似乎每个 user_type 的滞后百分比分割是不正确的(即百分比是针对每个滞后组计算的,而不是 user_type 组)。因此,我决定在绘图之前转换我的数据集,如果有更简单的方法,请分享。

谢谢!

最佳答案

这可以使用 ddply 来完成:

a = ddply(data, .(user_type), function(d) {
data.frame(table(d$lag)/length(d$lag))
})

虽然我可能会使用 data.table包,像这样:
library(data.table)
d = data.table(data)
a = d[, list(lag=unique(lag), percentage=as.numeric(table(lag)/length(lag))), by="user_type"]

关于r - ddply 在 R : for each group, 中找到特定变量的出现百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17765592/

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