Примените функцию ко всем столбцам фрейма данных, которая возвращает список - PullRequest
0 голосов
/ 03 июня 2019

У меня есть набор данных, который содержит искаженные данные.

d = data.frame(x = sample(1:15, size = 100, replace = TRUE, prob = 1:15),
               y = sample(1:20, size = 50, replace = TRUE, prob = 20:1))

Я хочу применить преобразование Джонсона к каждому столбцу. Я попробовал это с функцией применения.

library(jtrans)

x = применить (d, 2, jtrans)

Однако, поскольку преобразованные значения находятся в списке (т.е. преобразованы x $ x $ или преобразованы x $ y $), я не знаю, как применить это к фрейму данных?

1 Ответ

0 голосов
/ 04 июня 2019

Вы можете определить пользовательскую функцию и извлечь преобразованные значения из результирующего объекта.

library(jtrans)
#> Warning: package 'jtrans' was built under R version 3.4.4

set.seed(1)

d = data.frame(x = sample(1:15, size = 100, replace = TRUE, prob = 1:15),
               y = sample(1:20, size = 50, replace = TRUE, prob = 20:1))

new_d <- sapply(d, function(x) jtrans(x)$transformed)

head(new_d)
#>               x           y
#> [1,]  0.8277242  0.55000000
#> [2,]  0.4400000 -0.06683963
#> [3,] -0.1764075 -0.55000000
#> [4,] -1.3760105  1.79402536
#> [5,]  1.3200000  0.55000000
#> [6,] -1.3760105 -0.55000000

Создано в 2019-06-03 пакетом представ. (v0.2.1)

...