Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Assigning floor date in groupby fails

Tags:

r

dplyr

this is my code and I have a problem with 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()  

Indeed I have this error :

"Error in is_character(x) : object 'gr' not found"

Here is a sample of the dataset :

    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)

I tried what @NeslonGon told me to do, however I know get the same error on an another function, what should I do ?

like image 947
Snooz3 Avatar asked Dec 20 '25 21:12

Snooz3


1 Answers

The idea is that we don't need to summarise_at a grouped variable but use the Date to account for this. The select and mutate calls can be skipped. They're for convenience.

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() 
like image 122
NelsonGon Avatar answered Dec 23 '25 12:12

NelsonGon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!