To jest R.
Chcę obliczyć różnice między komórkami w ramce danych jednej kolumny
> head(df_benchmark)
Date .STOXXR
1 2000-01-03 478.52
2 2000-01-04 459.53
3 2000-01-05 448.19
4 2000-01-06 446.24
5 2000-01-07 455.80
6 2000-01-10 462.97
Próbowałem więc:
df_benchmark <- read.xlsx("Data.xlsx", sheet = "Benchmark", startRow = 2,colNames = TRUE, detectDates = TRUE, skipEmptyRows = FALSE)
df_benchmark[2] <- data.matrix(df_benchmark[2])
percent_change2 <- function(x)last(x)/first(x) - 1
monthly_return_benchmark <- df_benchmark %>%
group_by(gr = floor_date(Date, unit = "month")) %>%
summarize_at(vars(-Date, -gr), percent_change2) %>%
ungroup()
#Generujemy xts, wskazując kolumnę z informacją o czasie
monthly_return_benchmark <- xts(monthly_return[,-1], order.by=monthly_return$gr)
A jednak mam błąd. Wydaje się, że moja ramka danych z kolumną dat i kolumną wartości musi być 1d wektorem atomowym lub listą. Wydaje się, że przyczyną jest problem zmiennych:
> library(lubridate)
> percent_change2 <- function(x)last(x)/first(x) - 1
> monthly_return_benchmark <- df_benchmark %>%
+ group_by(gr = floor_date(Date, unit = "month")) %>%
+ summarize_at(vars(-Date, -gr), percent_change2) %>%
+ ungroup() %>%
+ select(-gr) %>%
+ as.matrix()
Error: Each variable must be a 1d atomic vector or list.
Problem variables: '.STOXXR'
Plik danych jest tutaj