【问题标题】:Aggregating Complex Array聚合复杂数组
【发布时间】:2019-03-14 09:53:56
【问题描述】:

下面是我目前拥有的一个较短的数据框。它由重复的 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')]

我可以相应地编制索引。

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

【问题讨论】:

  • I can extract the first and second purchase the individual makes. 为什么id 300 有 4 个条目?那是什么数据结构?
  • 有些人的购买次数超过 2 次。我(目前)担心前两个。

标签: r concatenation aggregation


【解决方案1】:

我们可以使用来自jsonlitetoJSON

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

【讨论】:

  • 我认为它有效,但如何打印结果? 隐藏了合并的购买列。
  • @robert 是一个列表列,可以通过提取列%&gt;% .$combinedpurchase得到它
猜你喜欢
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
  • 2012-06-09
  • 2014-10-21
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
相关资源
最近更新 更多