R не распознает мою таблицу данных как панель, у меня есть цены закрытия и итоговые цены за несколько десятилетий, однако иногда между ними отсутствуют месяцы, поэтому простой расчет доходности с запаздывающими значениями не работает по двум причинам: Требуется возврат по запаздывающим значениям, с интервалом не более 1 месяца, и теперь он возвращает по каждой компании вместо того, чтобы иметь один временной ряд на наблюдение. Мое решение таково:
df1 <- df %>%
group_by(seriesid) %>%
mutate(totret <- ifelse(month(date)-month(lag(date))>1,NA,totalreturn/lag(totalreturn)-1))
names(df1) <- c("date","company","totalreturn","close", "seriesid", "ticker","totret")
df1 <- df1 %>%
group_by(seriesid) %>%
mutate(closeret <- ifelse(month(date)-month(lag(date))>1,NA,close/lag(close)-1))
names(df1) <- c("date","company","totalreturn","close", "seriesid", "ticker","totret", "closeret")
Это не причудливо, но R не допускает более причудливого решения, потому что не распознает новые столбцы.
Мои данные выглядят так:
date company returnprice close seriesid
1 1888-01-31 x 2.500 2.500 0005
2 1888-02-04 x 2.750 2.750 0005
3 1888-04-20 x 3.350 3.350 0005
4 1895-01-30 y 7.500 4.350 0001
5 1895-02-26 y 7.800 4.650 0001
Теперь я могу получить мои данные, например:
date company totalreturn close seriesid totret closeret
1 1888-01-31 x 2.500 2.500 0005 NA NA
2 1888-02-04 x 2.750 2.750 0005 0.1 0.1
3 1888-04-20 x 3.350 3.350 0005 NA NA
4 1895-01-30 y 7.500 4.350 0001 NA NA
5 1895-02-26 y 7.800 4.650 0001 0.04 0.06897