我想删除在同一天访问某个网站超过一次的重复客户,但保留访问间隔超过3小时的客户。例如,John在2022年12月24日应该只有一个观察,但Abbie在2022年12月18日应该有2个观察。
在给定当前数据结构的情况下,是否可以使用R自动执行此操作,或者必须划分日、月、年、小时、分钟、秒,然后手动删除它们?
我的数据集如下所示:
structure(list(Name = c("John", "John", "John", "John", "John",
"James", "James", "Sandra", "Abbie", "Abbie", "Abbie", "Abbie",
"Abbie", "Abbie", "Abbie", "Michael", "Michael", "Michael", "David",
"David", "David", "David", "David", "David", "David", "David",
"David", "David", "Edmund", "Charles", "Charles", "Nancy", "Emma",
"Stephanie", "Stephanie", "Stephanie"), Date = structure(c(1640417400,
1640331540, 1640331180, 1671783780, 1671523380, 1671090360, 1671003540,
1667306100, 1670375640, 1670271360, 1669151640, 1671386520, 1671386400,
1671385800, 1671359220, 1668642120, 1668275820, 1668095820, 1670055180,
1669528080, 1669265700, 1668525360, 1667127420, 1667119740, 1667119380,
1667115720, 1666106100, 1666106040, 1666198260, 1671629280, 1671095760,
1672515000, 1673539500, 1670853060, 1670838660, 1669993680), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), Count = c(1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -36L))
非常感谢!
1条答案
按热度按时间qrjkbowd1#
使用dplyr和lubridate的一个想法是,我先将你的 Dataframe 存储在
data
下。现在的问题是如何过滤,如果你想要一个访问时间间隔超过三小时的用户的所有用户数据,你可以这样过滤
如果你想进一步缩小范围,只需在
group_by
中添加列即可。经过再三考虑,你可能还想在构建data2
时根据自己的需要调整group_by
调用。不过,我希望这至少能让你知道如何去做