在dplyr变异/汇总中应用功能并传播数据

时间:2019-08-08 10:29:54

标签: r dplyr

我正在尝试计算一些函数,然后根据结果传播数据。

代码和数据:

-预处理:

library(tidyquant)
library(tsfeatures)

data(FANG)

FANG_returns <- FANG %>%
  group_by(symbol) %>%
  tq_transmute(select     = adjusted, 
               mutate_fun = periodReturn, 
               period     = "daily", 
               type       = "arithmetic")

FANG_returns

有效的代码:

FANG_returns %>%
  filter(symbol == "FB") %>%
  mutate(ent = entropy(daily.returns))

无效的代码:

FANG_returns %>%
  filter(symbol == "FB") %>%
  mutate(max = max_level_shift(daily.returns))

错误:

  

错误:列max的长度必须为1008(组大小)或一个,而不是2。

函数max_level_shift返回两列:

max_level_shift(AirPassengers)
#>  max_level_shift time_level_shift 
#>             54.5            117.0

我如何spread以下列方式拥有我的数据:

> FANG_returns %>%
+   filter(symbol == "FB") %>%
+   summarise(ent = entropy(daily.returns))
# A tibble: 1 x 2
  symbol   ent   max_level_shift time_level_shift
  <chr>  <dbl>         <dbl>           <dbl>
1 FB     0.991       0.0573yyy       0.92764zzzz 

任何指针都很棒。

1 个答案:

答案 0 :(得分:1)

我们不使用MIBenum,而是仅按位置对QtextCodec::availableCodecs()进行子集设置,我们知道 max 将位于第一位置,并且时间在第二位置。

spread