gpt4 book ai didi

R:计算指定时间范围内不同类别的数量

转载 作者:行者123 更新时间:2023-12-02 08:16:16 25 4
gpt4 key购买 nike

这里有一些虚拟数据:

  user_id       date category
27 2016-01-01 apple
27 2016-01-03 apple
27 2016-01-05 pear
27 2016-01-07 plum
27 2016-01-10 apple
27 2016-01-14 pear
27 2016-01-16 plum
11 2016-01-01 apple
11 2016-01-03 pear
11 2016-01-05 pear
11 2016-01-07 pear
11 2016-01-10 apple
11 2016-01-14 apple
11 2016-01-16 apple

我想为每个 user_id 计算指定时间段(例如过去 7 天、14 天)内不同 categories 的数量,包括当前订单

解决方案如下所示:

 user_id       date category distinct_7 distinct_14
27 2016-01-01 apple 1 1
27 2016-01-03 apple 1 1
27 2016-01-05 pear 2 2
27 2016-01-07 plum 3 3
27 2016-01-10 apple 3 3
27 2016-01-14 pear 3 3
27 2016-01-16 plum 3 3
11 2016-01-01 apple 1 1
11 2016-01-03 pear 2 2
11 2016-01-05 pear 2 2
11 2016-01-07 pear 2 2
11 2016-01-10 apple 2 2
11 2016-01-14 apple 2 2
11 2016-01-16 apple 1 2

我发布了类似的问题 herehere ,但是没有一个涉及计算指定时间段内的累积唯一值。非常感谢您的帮助!

最佳答案

我建议使用 runner包裹。您可以通过 runner 函数在运行窗口上使用任何 R 函数。下面的代码获取指定输出,即过去 7 天 + 当前和过去 14 天 + 当前(当前 8 和 15 天):

df <- read.table(
text = " user_id date category
27 2016-01-01 apple
27 2016-01-03 apple
27 2016-01-05 pear
27 2016-01-07 plum
27 2016-01-10 apple
27 2016-01-14 pear
27 2016-01-16 plum
11 2016-01-01 apple
11 2016-01-03 pear
11 2016-01-05 pear
11 2016-01-07 pear
11 2016-01-10 apple
11 2016-01-14 apple
11 2016-01-16 apple", header = TRUE, colClasses = c("integer", "Date", "character"))



library(dplyr)
library(runner)
df %>%
group_by(user_id) %>%
mutate(distinct_7 = runner(category, k = 7 + 1, idx = date,
f = function(x) length(unique(x))),
distinct_14 = runner(category, k = 14 + 1, idx = date,
f = function(x) length(unique(x))))

更多信息请访问 packagefunction文档。

关于R:计算指定时间范围内不同类别的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41693081/

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