Мне часто приходится вычислять процентное соотношение запаздывающих изменений, и мне было интересно, как можно упростить мой нынешний подход?
В настоящее время я создаю два новых столбца в моих данных - в каждом из вновь созданных столбцов я рассчитывал процентное изменение по сравнению с предыдущим годом, используя функцию lag
. Я предпочитаю продолжать работать в data.table
, так как мои данные будут довольно большими, и я считаю, что нестандартная оценка намного проще, чем в dplyr
. Во всяком случае, ниже мои (пример) данные.
Как можно использовать функцию внутри таблицы данных.таблицы (не повторяйте это так много)?
year <- c(2012, 2013, 2014, 2015)
value <- c (22,33,44,55)
amount <- c(99, 88, 77, 66)
mydata <- cbind(year, value, amount)
mydata <- as.data.table(mydata)
getPctLag(mydata$value)
mydata <- mydata[ , ':=' (value_pct = paste0(round((value/lag(value) - 1) * 100, digits = 3) , " %"),
amount_pct = paste0(round((amount/lag(amount) - 1) * 100, digits = 3) , " %"))]
getPctLag <- function(x){lag_pct = paste0(round((x/lag(x) - 1) * 100, digits = 3) , "%")}