【发布时间】:2021-04-02 08:43:27
【问题描述】:
这是对以下问题的扩展:Rolling window slider::slide() with grouped data
我想用 slide_dbl() 改变我的分组 tibble 的一列,即在所有组上应用 slide_dbl(),但只在它们内部,而不是在它们之间。
运行链接问题的解决方案时,我收到以下错误消息:
Error: Problem with `mutate()` input `rollreg`.
x Inapplicable method for 'mutate_' applied to object of class "c('double', 'numeric')".
我的小标题有以下结构:
tibble [450,343 x 3] (S3: grouped_df/tbl_df/tbl/data.frame)
$ company: num [1:450343] 1 1 1 1 1 ...
$ date: Date[1:450343], format: "2011-11-30" "2011-12-31" "2012-01-31" "2012-02-29" ...
$ result: num [1:450343] NA NA NA 12.5981 -2.9023 ...
- attr(*, "groups")= tibble [3,339 x 2] (S3: tbl_df/tbl/data.frame)
..$ company: num [1:3339] 1 2 3 4 5 ...
..$ .rows : list<int> [1:3339]
完成,这是我根据链接解决方案运行的代码:
testtest <- data %>%
group_by(company) %>% nest() %>%
mutate(rollreg = map(data, ~ .x %>% mutate(result_2 = slide_dbl(.x = .$result, .f = ~prod(1+.)-1, .before = 11, .after = -1, complete=TRUE)))) %>%
select(-data) %>% unnest(rollreg)
在这里,出现上述错误消息。我想这是因为数据结构。然而,我想不出任何解决方案(也没有类似的功能,如 group_map() 或 group_modify())。任何人都可以帮忙吗?提前致谢!
【问题讨论】:
-
在链接中,示例'data'列名不同
-
这是我自己的数据。列名会影响代码的“功能”吗?
-
事实并非如此。正如你提到的那个链接,我认为数据来自那个帖子
-
您可以查看以下解决方案。希望对你有帮助