我对 R 很陌生,所以我需要一些帮助来解决这个问题。我有一个不同地区 (AEZ) 每日降雨量值的数据框。
输出需要是另一个采用(个别降雨量 - 列平均值)/列标准差的表。
例如,在下表中,对于 01.Jan 和 AEZ 3,它应该采用 (0.0402 - 平均值 (01.Jan)) / SD(01.Jan)。需要为每个 AEZ 运行此计算,然后输出将是包含这些计算结果的另一个表格。
AEZ `01-Jan` `02-Jan` `03-Jan` `04-Jan` `05-Jan` `06-Jan` `07-Jan`
1 3 0.0402 0.0044 0.0998 0.142 0.0061 0.0267 0.0351
2 12 0.0143 0.0027 0.0027 0.0029 0.0317 0.0012 0.0012
3 48 0 0 0.0026 0.0015 0.0019 0 0
4 77 0 0 0.0059 0.0124 0.0048 0.0009 0
5 160 0.0261 0.0173 0.057 0.0221 0.0892 0 0.0003
6 162 0.167 0.0037 0.0041 0.0683 0.102 0.199 0.0308
7 178 0.0062 0.0033 0.0808 0.101 0.0033 0.0023 0.0315
答案 0 :(得分:1)
这将标准化(居中和缩放)原始数据框。
df[,-1] <- scale(df[,-1], center = TRUE, scale = TRUE)
要缩放副本,请执行以下操作:
foo <- df
foo[,-1] <- scale(foo[,-1], center = TRUE, scale = TRUE)
答案 1 :(得分:0)
我们可以使用dplyr
:
library(dplyr)
data %>%
mutate(across(-AEZ, ~ (.x - mean(.x)) / sd(.x)))
哪个返回
# A tibble: 7 x 8
AEZ `\`01-Jan\`` `\`02-Jan\`` `\`03-Jan\`` `\`04-Jan\`` `\`05-Jan\`` `\`06-Jan\`` `\`07-Jan\``
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 3 0.0663 -0.0145 1.51 1.67 -0.647 -0.0835 1.22
2 12 -0.369 -0.302 -0.793 -0.857 -0.0563 -0.429 -0.751
3 48 -0.610 -0.759 -0.795 -0.882 -0.744 -0.445 -0.821
4 77 -0.610 -0.759 -0.717 -0.684 -0.677 -0.433 -0.821
5 160 -0.171 2.17 0.495 -0.508 1.27 -0.445 -0.804
6 162 2.20 -0.133 -0.760 0.332 1.56 2.25 0.969
7 178 -0.505 -0.201 1.06 0.926 -0.711 -0.414 1.01