У меня есть числовые переменные в DataFrame. Я хочу создать новые переменные, которые являются среднесрочными версиями оригиналов, добавить новые переменные в мою фреймворк данных и переименовать новые переменные, чтобы они имели те же имена, что и оригиналы, но с суффиксом «_m».Как использовать lapply для создания новых переменных в DataFrame и переименовать их
На данный момент я могу сделать это только в два этапа, и я подмножество с использованием индексов столбцов, что не очень гибко.
Есть ли способ объединить мой двухступенчатый подход в одном, а также избежать использования индексов столбцов, чтобы процесс работал без необходимости подсчета количества столбцов, которые я хочу иметь в центре внимания, а затем выяснения количества новых столбцов это означало бы добавление к моему файлу данных? Я не должен использовать lapply
, если есть лучший способ.
Вот упрощенная версия моего нынешнего подхода:
df <- data.frame(a = letters[1:10], b = 1:10, c = 11:20)
df[4:5] <- lapply(df[2:3], function(x) {
y <- scale(x, center = T, scale = F)
}
)
names(df)[4:5] <- lapply(names(df)[2:3], function(x) {
y <- paste0(x, "_m")
}
)
'library (dplyr); fun1 <- function (x) {scale (x, center = TRUE, scale = FALSE)}; mutate_if (df, is.numeric, funs ('_ m' = fun1)) ' – Sotos
@Sotos Это здорово, спасибо, я не знал о' mutate_if' или что вы можете менять имена столбцов, используя 'funs'. – meenaparam
Существует также 'mutate_at', который может пригодиться для вашего дела – Sotos