r - 创建一个列表子集数据框并根据 r 中的先前加入其他列表
问题描述
我有每个产品的时间序列:
ts <- list()
ts[["p1"]] <- ts(seq(1,5), start=c(2019,1), frequency=12)
ts[["p2"]] <- ts(seq(1,5), start=c(2019,1), frequency=12)
ts[["p3"]] <- ts(seq(1,5), start=c(2019,1), frequency=12)
ts[["p4"]] <- ts(seq(1,5), start=c(2019,1), frequency=12)
ts[["p5"]] <- ts(seq(1,5), start=c(2019,1), frequency=12)
以及数据框中产品和类别之间的关系
category <- c("cA","cA","cB","cB","cB")
product <- c("p1","p2","p3","p4","p5")
df_product_category <- data.frame(product,category)
我首先想要每个类别的列表:
list_category <- list(unique(df_product_category$category))
#this doesn´t work
然后我想为每个类别创建另一个列表,其中包含该类别中的所有产品
list_category <- c("cA","cB")
一旦我有了这个列表,我需要一个包含该类别中每个产品的每个类别的嵌套列表
list_product_category <- list()
list_product_category$'cA' <- c("p1","p2")
list_product_category$'cB' <- c("p2","p3","p4")
然后我希望创建另一个列表嵌套:category-product-ts 像这样:
ts_list_product_category <- list()
ts_list_product_category[[cA]]$p1 <- ts[["p1"]]
ts_list_product_category[[cA]]$p2 <- ts[["p2"]]
ts_list_product_category[[cB]]$p3 <- ts[["p3"]]
ts_list_product_category[[cB]]$p4 <- ts[["p4"]]
ts_list_product_category[[cB]]$p5 <- ts[["p5"]]
提前致谢 :)
解决方案
试试这个...一个健壮的方法。
library(tidyverse)
(d <- df_product_category %>% group_by(category) %>% nest()) %>% glimpse()
输出数据集结构
Observations: 2
Variables: 2
Groups: category [2]
$ category <fct> cA, cB
$ data <list> [<tbl_df[2 x 1]>, <tbl_df[3 x 1]>]
推荐阅读
- reactjs - 从 React-Native-Navigation v2 中删除导航栏?
- android - Android TV Leanback RowsFragment 在开始时保持焦点项目
- database - 对重复多次的 1 对多关系建模
- php - Laravel 路由组可选前缀不起作用
- kotlin - 是否可以更改 Kotlin 的属性 getter 类型?
- java - 打破 Transformer 流程 Spring 集成
- ffmpeg - 如何与ffmpeg一起使用过滤和流复制?
- android - NestedScrollView 内的 RecyclerView 展开
- vue.js - 如何使用 vue-highcharts 全局设置 Highcharts 对象配置?
- dictionary - Flutter ExpansionTile 子项作为 Gridview?