聚合复杂数组

时间:2018-10-09 15:00:08

标签: r concatenation aggregation

下面是我当前拥有的一个较短的数据帧。它由重复的ID号,购买商品的月份以及商品的种类组成:

id <- c('100','100','200','200','300','300','300','300')
month <- c(1,1,6,8,1,1,4,7)
purchase <- c('Apple','Apple','Banana','Orange','Apple','Apple','Pear','Melon')

df <- data.frame(id,month,purchase)

我正在尝试使用聚合函数来连接此数据帧,以便提取个人进行的第一次购买和第二次购买。

我想返回这样的东西

id   combined purchase
100  [(1,'Apple'),(1,'Apple')]
200  [(6,'Banana'),(8,'Orange')]
300  [(1,'Apple'),(1,'Apple'),(4,'Pear'),(7,'Melon')]

我可以据此建立索引。

也许有更简单的方法可以做到这一点,但我不确定。我会很感激任何反馈和帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以使用toJSON中的jsonlite

library(tidyverse)
library(jsonlite)
df %>%
   group_by(id) %>% 
   summarise(combinedpurchase = list(toJSON(unname(data.frame(month, 
                as.character(purchase))))))
相关问题