Выполнение одинакового изменения всех переменных в фрейме данных - PullRequest
0 голосов
/ 30 октября 2018

У меня есть фрейм данных с 28 переменными, и я хотел бы изменить каждую переменную в одном фрейме данных с помощью одной и той же функции. Например, добавьте дополнительный столбец для каждой переменной во фрейме данных, где новый столбец является журналом переменной. Так, например, если бы у меня было

dataframe <- data.frame(X=data1, Y=data2, Z=data3)

Я хочу новый фрейм данных, который содержит X Y и Z, а также log (X), log (Y) и log (Z). Это достаточно просто сделать с помощью

mutate(dataframe, log(X)); mutate(dataframe(log(Y))

и т. Д., Но для 28 переменных (и нескольких преобразований для каждой переменной - я тоже хочу получить sqrt и ^ 2 для каждой) это слишком много. Я знаю о существовании mutate_all, но по какой-то причине, когда я пытаюсь использовать его, он заменяет все переменные, а не добавляет новые.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

A base R вариант будет

df <- head(iris[1:2])
df[paste("log", names(df), sep = "_")] <- log(df)
df
#  Sepal.Length Sepal.Width log_Sepal.Length log_Sepal.Width
#1          5.1         3.5         1.629241        1.252763
#2          4.9         3.0         1.589235        1.098612
#3          4.7         3.2         1.547563        1.163151
#4          4.6         3.1         1.526056        1.131402
#5          5.0         3.6         1.609438        1.280934
#6          5.4         3.9         1.686399        1.360977
0 голосов
/ 30 октября 2018

Мы можем использовать mutate_all и указать суффикс в funs, чтобы он создавался как новый столбец. В противном случае заменил бы оригинал с выводом функции

dataframe %>%
        mutate_all(funs(log = log(.))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...