行号有限的子集数据

时间:2017-05-17 06:56:18

标签: r group-by subset

我有大数据框,其中包含客户数据。我尝试为每个客户激活一些算法,但面临性能问题。

因此,我希望将数据分配给每个客户,但只采用最新更新的' n'观察结果。

重要问题:

  • 我为每个新观察运行我的算法(意思是,我需要一个"新的"每个新观察的子集)

  • 我持有所有客户的历史记录(这是"大数据框架"上面提到的),每天刷新一次

我想做类似的事情(然后选择tailhead或其他一些更快的方法):

dfrm %>% group_by(cust_id) %>% .[order(-.[,1]),]

其中我的第一列是cutomer以下列格式yyyy-mm-dd HH:MM:SS(结构POSIXct)购买的日期和时间;但是我收到错误

  

-POSIXt(左)错误:一元' - '未定义为" POSIXt"对象

除了解决我的问题之外,我很乐意听到任何其他想法来解决我的问题。

1 个答案:

答案 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)