我有大数据框,其中包含客户数据。我尝试为每个客户激活一些算法,但面临性能问题。
因此,我希望将数据分配给每个客户,但只采用最新更新的' n'观察结果。
重要问题:
我为每个新观察运行我的算法(意思是,我需要一个"新的"每个新观察的子集)
我持有所有客户的历史记录(这是"大数据框架"上面提到的),每天刷新一次
我想做类似的事情(然后选择tail
或head
或其他一些更快的方法):
dfrm %>% group_by(cust_id) %>% .[order(-.[,1]),]
其中我的第一列是cutomer以下列格式yyyy-mm-dd HH:MM:SS
(结构POSIXct
)购买的日期和时间;但是我收到错误
-POSIXt
(左)错误:一元' - '未定义为" POSIXt"对象
除了解决我的问题之外,我很乐意听到任何其他想法来解决我的问题。
答案 0 :(得分:0)
有人建议您可以这样做:
dfrm <- data.frame(date = as.POSIXlt(Sys.time() + rnorm(5)), cust_id = rnorm(5))
dfrm %>% group_by(cust_id) %>% arrange(date) %>% slice(1)
要按不同的顺序排列,请使用arrange(desc(date))
而不是-
正如您在评论中提到的过滤和100条最新记录:
dfrm <- data.frame(date = as.POSIXlt(Sys.time() + rnorm(5)), cust_id = rnorm(5), hour = 1:5)
dfrm %>% group_by(cust_id) %>% arrange(date) %>% filter(hour == 1) %>% slice(1:100)