假设我有一个包含10个数值的数据集,我想对每个列进行标准化(实际上应用任何函数),因此对于A列,我希望规范化并在列ANorm中获得“A normalized” 。其余的一样。
如何在R中编程?
我尝试了一个for循环和lapply,我认为这是正确的方法,但我无法达到最终结果。
非常感谢任何帮助或指示!
答案 0 :(得分:1)
这适用于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