Примените функцию к n столбцам и получите результаты по n новым столбцам в R. Как? - PullRequest
0 голосов
/ 25 апреля 2018

Допустим, у меня есть набор данных с 10 числовыми значениями, и я хочу нормализовать (фактически применить любую функцию) каждый из этих столбцов, поэтому для столбца A я хочу нормализовать и получить «нормализованный» в столбце ANorm.,То же самое для остальных.

Как я могу запрограммировать это в R?

Я попытался использовать цикл for и lapply, что, я думаю, было правильным подходом, но я не смог достичь конечного результата.

Любая помощь или направление очень ценится!

1 Ответ

0 голосов
/ 25 апреля 2018

Это идеально подходит для tidyverse решения

library(tidyverse)
set.seed(123)
matrix(runif(50),ncol=5) %>% 
  as_tibble() %>% 
  mutate_at(vars(V1:V5), funs(norm = ./mean(.)))
# A tibble: 10 x 10
       V1     V2    V3     V4    V5 V1_norm V2_norm V3_norm V4_norm V5_norm
    <dbl>  <dbl> <dbl>  <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
 1 0.288  0.957  0.890 0.963  0.143  0.497   1.83     1.45   1.79     0.413
 2 0.788  0.453  0.693 0.902  0.415  1.36    0.866    1.13   1.68     1.20 
 3 0.409  0.678  0.641 0.691  0.414  0.707   1.29     1.04   1.28     1.20 
 4 0.883  0.573  0.994 0.795  0.369  1.53    1.09     1.62   1.48     1.07 
 5 0.940  0.103  0.656 0.0246 0.152  1.63    0.197    1.07   0.0458   0.441
 6 0.0456 0.900  0.709 0.478  0.139  0.0788  1.72     1.15   0.888    0.402
 7 0.528  0.246  0.544 0.758  0.233  0.913   0.470    0.884  1.41     0.675
 8 0.892  0.0421 0.594 0.216  0.466  1.54    0.0804   0.965  0.402    1.35 
 9 0.551  0.328  0.289 0.318  0.266  0.954   0.627    0.470  0.592    0.770
10 0.457  0.955  0.147 0.232  0.858  0.790   1.82     0.239  0.431    2.48 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...