Назначение минимальной даты в групповом сбое не выполняется - PullRequest
2 голосов
/ 15 марта 2019

это мой код, и у меня проблема с groupby:

    library(dplyr)
    library(lubridate)

    df <- read.xlsx("Data.xlsx", sheet = "Sector-STOXX600", startRow = 2,colNames = TRUE, detectDates = TRUE, skipEmptyRows = FALSE)
    df[2:19] <- data.matrix(df[2:19])


 percent_change2 <- function(x)last(x)/first(x) - 1

    monthly_return <- df %>% 
      group_by(gr = floor_date(Date, unit = "month")) %>%
      summarize_at(vars(-Date, -gr), percent_change2) %>%
      ungroup() %>%
      select(-gr) %>% 
      as.matrix()  

Действительно, у меня есть эта ошибка:

"Ошибка в is_character (x): объект 'gr' не найден"

Вот пример набора данных:

    Date  .SXQR  .SXTR  .SXNR  .SXMR  .SXAR  .SX3R  .SX6R  .SXFR  .SXOR  .SXDR  .SX4R  .SXRR  .SXER
1 2000-01-03 364.94 223.93 489.04 586.38 306.56 246.81 385.36 403.82 283.78 455.39 427.43 498.08 457.57
2 2000-01-04 345.04 218.90 474.05 566.15 301.13 239.24 374.64 390.41 275.93 434.92 414.10 476.17 435.72

UPDATE

volatility_function<- function(x)sqrt(252) * sd(diff(log(x))) * 100
annualized_volatility <- df %>%
  mutate(Date=ymd(Date)) %>%
  group_by(gr = floor_date(Date, unit = "year")) %>%
  select(gr,everything()) %>%
  summarize_at(vars(-Date, -gr), volatility_function) %>%
  ungroup() %>% select(-gr) %>%
  as.matrix() 
head(annualized_volatility,5)

Я попробовал то, что сказал мне @NeslonGon, однако я знаю, что получаю ту же ошибку в другой функции, что мне делать?

1 Ответ

2 голосов
/ 15 марта 2019

Идея состоит в том, что нам не нужно summarise_at группировать переменную, а использовать Date для учета этого.Вызовы select и mutate могут быть пропущены.Они для удобства.

df %>%
  mutate(Date=ymd(Date)) %>% 
 group_by(gr = floor_date(Date, unit = "month")) %>% 
  select(gr,everything()) %>% 
  summarize_at(vars(-Date), percent_change2) %>%  
  ungroup() %>% 
  select(-gr) %>% 
  as.matrix() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...