Я пытаюсь сгенерировать индекс, полученный из возвращаемых данных.
Новый столбец, который я хочу сгенерировать, будет получен, взяв 100 и затем составив это.Для этого примера:
первое значение = 100
второе значение = первое значение * (1 + 10/100) = 110
третье значение = второе значение * (1+20/100) = 132 и т. Д.
Обратите внимание, что первое возвращаемое значение 5 необходимо игнорировать.Я знаю, что могу просто перезаписать это, чтобы выполнить то, что я хочу, но мне было интересно, есть ли более элегантный способ получить желаемый результат.
Я близок к тому, чтобы получить то, что я хочу, но мне нужно игнорироватьпервое возвращение 5. Ожидаемый результат new_col будет 100, 110, 132.
**Reproducible example**
# Load package
library(tidyverse)
# Create data
df <- data.frame(asset = c("A", "A", "A"), return = c(5,10,20))
df
# Generate new column
test <- df %>%
mutate(new_col = 100) %>% #initialize
mutate(new_col = ifelse(row_number(new_col) == 1,
new_col,
lag(new_col, 1) * cumprod((1 + return/100))
)
)
test
Заранее спасибо!