У меня есть фрейм данных с недельными значениями для большого количества переменных. Я хочу перебрать каждый столбец и получить еженедельное изменение для каждой строки и переменной, выраженной в процентах.
Пример:
a = c(2,3,1,9)
b = c(4,5,8,1)
sentiment = cbind(a,b) %>%
as.data.frame()`
Outcome should be:
a b a_delta b_delta
2 4 NA NA
3 5 0.5 0.3
1 8 -0.7 0.6
9 1 8.0 -0.8
В моем текущем подходе я использую два шага: (1) создать еженедельную задержку, (2) вычислить разницу в процентах между задержанным значением и значением. Там нет сообщения об ошибке, но расчет по-прежнему неверен, и я не уверен, почему. Любая помощь приветствуется!
library(data.table)
a = c(2,2.5,2,4)
b = c(4,5,8,1)
sentiment = cbind(a,b) %>%
as.data.frame()
setDT(sentiment)[, paste0(names(sentiment), "_delta") := lapply(.SD, function(x) shift(x, 1L,
type="lag")/x -1)]