使用dplyr从列表中提取名称

PavoDive

我有一个数据表,其中包含许多产品的消费量。我生成了每种产品的预测,现在想获得周期+1的均值和较高的80%。问题在于,根据所使用的方法,预测对象是具有不同结构的列表,因此我无法通过建立索引来检索值(我可以使用来命名data.table)。

这是(虚拟)数据和代码:

# load required libraries
library(data.table)
library(xts)
library(forecast)
library(dplyr)

# create random data
set.seed(1)
a <- data.table(prod = sample(LETTERS[1:5], 20, TRUE), cons = sample(1:50, 20, TRUE), dt = sample(seq(as.Date("2016/06/01"), as.Date("2016/07/27"), by = "day"), 20, FALSE))

# create a time series of purchases
b <- a[, .(C=sum(cons)), by = .(dt, prod)][, x := .(list(xts(x = C, order.by = dt))), by = prod]
b <- b[, .SD[1,], by = prod]

# create a "reference" timeseries
dts <- xts(order.by = seq(as.Date("2016/06/01"), as.Date("2016/07/27"), by = "day"))

# merge reference and calculated timeseries, so zeros appear
b[, x2 := .(list(merge.xts(dts, x[[1]], fill = 0))), by = prod]

# calculate forecast for each extended timeseries
b[, fc := .(list(forecast(x2[[1]]))), by = prod]

现在,我要提取均值和较高水平。问题在于均值有时位于列表的插槽2中,有时不在列表中,因此我必须用名称来称呼它。data.table我这样做:

b[, mn := fc[[1]]$mean[1], by = prod]
b[, up := fc[[1]]$upper[1,1], by = prod]

但是,如果尝试在中执行相同的操作dplyr,则会收到关闭错误:

b  %>% mutate(mnD = .$fc[[1]]$mean[1])
## Error: invalid subscript type 'closure'

b  %>% mutate(mnD = fc[[1]]$mean[1])
## Error: invalid subscript type 'closure'

我在做什么错,我该如何解决dplyr

西蒙·杰克逊

与结合map_dbl()purrr包将工作如下:

library(dplyr)
library(purrr)
b %>% as_data_frame() %>% mutate(mnD = map_dbl(fc, ~ .$mean[1]))
#> # A tibble: 5 x 7
#>    prod         dt     C         x        x2             fc       mnD
#>   <chr>     <date> <int>    <list>    <list>         <list>     <dbl>
#> 1     B 2016-07-17    47 <S3: xts> <S3: xts> <S3: forecast> 2.5241999
#> 2     C 2016-07-14    33 <S3: xts> <S3: xts> <S3: forecast> 1.1749266
#> 3     E 2016-06-30     7 <S3: xts> <S3: xts> <S3: forecast> 0.5952119
#> 4     D 2016-06-24    20 <S3: xts> <S3: xts> <S3: forecast> 3.3695962
#> 5     A 2016-07-04    18 <S3: xts> <S3: xts> <S3: forecast> 0.8421001

as_data_frame()放在一边,不是必需的,而是添加它来以一种整洁的方式打印结果。没有它,列表列将打印所有数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用map()函数从列表中提取名称

来自分类Dev

从嵌套列表中提取名称相同的向量,列表名称在哪里变化?使用purrr?

来自分类Dev

从(名称,处理程序)对列表中提取名称

来自分类Dev

使用RVest从网页中提取名称列表和基础超链接

来自分类Dev

从文本中提取名称

来自分类Dev

使用 selenium 从标签中提取名称或 href 无需点击

来自分类Dev

从网址中提取名称实体

来自分类Dev

从混乱的文件中提取名称

来自分类Dev

从网址中提取名称实体

来自分类Dev

从句子中提取名称

来自分类Dev

使用dplyr从列表中提取对象

来自分类Dev

从Wikipedia项目符号列表中提取名称只会返回每个字母的名字

来自分类Dev

使用file_b中2列的信息从file_a中提取名称

来自分类Dev

如何从数组中的类中提取名称?

来自分类Dev

从对象中提取名称与测试匹配的属性

来自分类Dev

从PIV智能卡中提取名称

来自分类Dev

如何从字符串中提取名称和版本

来自分类Dev

从最外层元素中提取名称空间及其URI

来自分类Dev

从数据字符串中提取名称

来自分类Dev

从包含电子邮件的 PDF 中提取名称

来自分类Dev

从python中的字符串中提取名称

来自分类Dev

使用字符串提取名称与字符串相同的列表

来自分类Dev

使用字符串提取名称与字符串相同的列表

来自分类Dev

为嵌套列表的每个叶提取名称层次结构

来自分类Dev

使用python从NLTK中提取名词短语

来自分类Dev

从lme4中的VarCorr对象中提取名称并将其粘贴为列名称

来自分类Dev

如何使用BeautifulSoup提取名称中的值?

来自分类Dev

提取名称过长的文件

来自分类Dev

从文件中提取列表并缩写名称

Related 相关文章

热门标签

归档