gpt4 book ai didi

R计算(分层)长数据集中的时间差

转载 作者:行者123 更新时间:2023-12-02 02:32:10 29 4
gpt4 key购买 nike

我一直在努力处理一些时间戳数据(直到现在才需要处理日期,并且它表明)。希望您能帮忙。

我正在处理来自网站的数据,该数据显示每个客户 (ID) 各自的访问以及这些访问的时间戳。它的分组是指一个客户可能有多次访问/时间戳。

df 的结构如下,采用长格式:

 df <- data.frame("Customer" = c(1, 1, 1, 2, 3, 3),  
"Visit" =c(1, 2, 3, 1, 1, 2), # e.g. customer ID #1 has visited the site three times.
"Timestamp" = c("2019-12-31 12:13:25", "2019-12-31 16:13:25", "2020-01-05 10:13:25", "2019-11-12 15:18:42", "2019-11-13 19:22:35", "2019-12-10 19:43:55"))

注意:在真实的数据集中,时间戳不是一个因素,而是其他一些憔悴的字符类型令人厌恶的因素,我可能应该首先尝试以某种方式转换为 POSIXct 格式。

我想要在这里做的是创建一个 df,它显示每个客户的平均访问时间(假设以分钟或小时为单位)。仅进行过一次访问的访问者(例如,我的示例中的第二个客户)可以提前过滤掉,或者应该显示 0。我的最终目标是可视化该分布,并可能计算所有客户的总平均值。

因为访问次数可能会有很大差异(例如 1 次或 256 次访问),所以我不能只使用数据集的“宽”版本,其中固定的访问次数是我可以减去并平均的列。

我有点不知如何最好地解决此类问题,非常感谢!

最佳答案

使用 dplyr:

df %>%
arrange(Customer, Timestamp) %>%
group_by(Customer) %>%
mutate(Difference = Timestamp - lag(Timestamp)) %>%
summarise(mean(Difference, na.rm = TRUE))

由于分组,任何客户的第一个差异值应为 NA(包括仅访问过一次的客户),因此它们将随平均值一起被丢弃。

关于R计算(分层)长数据集中的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64894894/

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