I would like to transform my data but I am not quite sure which method is the best one. Thus, I use the package "bestNormalize".
It works fine on one single column of a dataframe, however I have have list with two dataframes (each dataframe with 9 columns) and I would like to apply the function "bestNormalize" to each column. I tried to map but it does not work.
Further, I would like to apply other functions (transformation of the data, e.g. with the function "yeojohnson") of the package in the same how I applied the "bestNormalize" function to each column of each dataframe.
Does anybody know how this works? Thanks in advance.
install.packages("bestNormalize")
library(bestNormalize)
install.packages("purrr")
library(purrr)
# Data
a <- data.frame(
met1 = rnorm(n = 100, mean = 0, sd = 1),
met2 = rnorm(n = 100, mean = 0, sd = 1),
met3 = rnorm(n = 100, mean = 0, sd = 1),
met4 = rnorm(n = 100, mean = 0, sd = 1),
met5 = rnorm(n = 100, mean = 0, sd = 1),
met6 = rnorm(n = 100, mean = 0, sd = 1),
met7 = rnorm(n = 100, mean = 0, sd = 1),
met8 = rnorm(n = 100, mean = 0, sd = 1),
met9 = rnorm(n = 100, mean = 0, sd = 1)
)
y <- data.frame(
met1 = rnorm(n = 100, mean = 0, sd = 1),
met2 = rnorm(n = 100, mean = 0, sd = 1),
met3 = rnorm(n = 100, mean = 0, sd = 1),
met4 = rnorm(n = 100, mean = 0, sd = 1),
met5 = rnorm(n = 100, mean = 0, sd = 1),
met6 = rnorm(n = 100, mean = 0, sd = 1),
met7 = rnorm(n = 100, mean = 0, sd = 1),
met8 = rnorm(n = 100, mean = 0, sd = 1),
met9 = rnorm(n = 100, mean = 0, sd = 1)
)
my_list <- list(a, y)
# Works:
bestNormalize::bestNormalize(my_list[[1]]$met1)
# Does not work:
stand_dat_men <- my_list %>% purrr::map(~mutate_at(.x, .vars = vars(met1:met9), ~bestNormalize(.)))