在R中聚合(客户)数据

时间:2017-01-26 17:11:39

标签: r aggregate

我目前正在处理包含多年购买的大型客户购买数据集。

由于我只想检查客户是否每年都购买,我正在寻找一种有效的方式来在客户层面上汇总这些购买。

最终结果应该看起来像一个表格,其中每一行代表一个独特的客户,由我显示,然后是一些真/假变量,显示他是否在特定年份购买。一个简单的例子:

原始数据类似于:

Raw data example

Customer id Product id  year
1           1           2014
2           2           2014
1           3           2015

结果应类似于:

Result example

Customer id Bought 2014 Bought 2015
1           TRUE        TRUE
2           TRUE        FALSE

我尝试使用for-if循环来创建它,以便创建真或假变量但是这似乎有一个巨大的运行时间,这使得它无法用于我正在使用的数据集的大小。 此外,如果我使用for - if循环,我仍然很难在客户级别上汇总数据,因为我不确定要使用什么作为'FUN ='语句。

2 个答案:

答案 0 :(得分:1)

这是另一种tidyrlibrary(dplyr) library(tidyr) df %>% group_by(customer_id) %>% gather(variable, value, year) %>% spread(value, variable) %>% summarize_each(funs(as.logical(sum(!is.na(.)))), -customer_id, -product_id) 方法,可以适应原始数据中的任意年限。

1920/1080

答案 1 :(得分:0)

凯文尝试使用dplyr

代码
#create your data.frame
test <- data.frame(cus=c(1,2,1),prod=c(1,2,3),year=c(2014,2014,2015))

summary <- test %>% 
  group_by(cus) %>% 
  summarise(bought.2014 = any(year==2014),
            bought.2015 = any(year==2015)
 )