Я работаю с самодельной инфиксной функцией, которая просто вычисляет
процентный рост между наблюдениями в колонках.
options(digits=3)
`%grow%` <- function(x,y) {
(y-x) / x * 100
}
test <- data.frame(a=c(101,202,301), b=c(123,214,199), h=c(134, 217, 205))
Затем я использую lapply
в своей базе данных игрушек, чтобы добавить два новых столбца.
test[,4:5] <- lapply(1:(ncol(test)-1), function(i) test[,i] %grow% test[,(i+1)])
test
#Output
a b h V4 V5
1 101 123 134 21.78 8.94
2 202 214 217 5.94 1.40
3 301 199 205 -33.89 3.02
Это легко, учитывая, что у меня всего три столбца, и я могу написать test[,4:5]
. Теперь поговорим в общих чертах: как это сделать, если у нас есть n столбцов, использующих индексы столбцов?
Я имею в виду, что я хочу создать n-1 столбцов для данной базы данных, начиная с последней. Что-то вроде:
test[,(last_current_column+1):(last_column_created_using_function)]
Учитывая то, что я читал в некоторых других постах, используя мой пример, test[,(last_current_column+1):
можно записать как:
test[,(ncol(test)+1):]
но вторая часть все еще отсутствует, и я понятия не имею, как ее написать.
Надеюсь, я ясно дал понять. Я полностью ценю любой комментарий или совет.
Счастливого 2019 года :) 1020 *