在 R 中按组归一化
Normalizing by Group In R
我正在尝试在 R 中按组对数据帧进行归一化。我这样做的原因是因为我想 运行 每个组的收入回归方程并希望获得斜率。因为数据不是正态分布的,所以我想按组对数据集进行归一化,以便更好地了解趋势。
我用来规范化数据集的函数如下:
normalize <- function(x){
return((x-min(x)) / max(x)-min(x))
}
我知道 R 中还有另一个已经内置的函数,叫做 scale
。
我的数据名是这样的:
df
Date Partner Revenue
1 2017-03-01 A 33121
2 2017-03-02 A 32758
3 2017-03-03 A 34675
4 2017-03-04 A 32407
5 2017-03-05 A 30851
6 2017-03-06 A 33248
7 2017-03-07 A 34288
8 2017-03-08 A 33820
9 2017-03-09 A 36021
10 2017-03-10 A 38757
11 2017-03-11 A 41149
12 2017-03-12 A 36203
13 2017-03-13 A 41167
14 2017-03-14 A 50237
15 2017-03-15 A 48463
16 2017-03-01 B 2123
17 2017-03-02 B 1684
18 2017-03-03 B 1246
19 2017-03-04 B 1099
20 2017-03-05 B 2314
21 2017-03-06 B 1565
22 2017-03-07 B 1610
23 2017-03-08 B 1749
24 2017-03-09 B 1917
25 2017-03-10 B 1784
26 2017-03-11 B 1662
27 2017-03-12 B 1748
28 2017-03-13 B 1452
29 2017-03-14 B 880
30 2017-03-15 B 591
使用归一化函数我尝试了这条路线,但 NEWREV
数字不在 0 和 1 之间。它们的范围是 -30,000 到 -590。
scaled_data <-
df %>%
group_by(`Partner`) %>%
mutate(NEWREV = normalize(Revenue))
我如何按组调整收入,使数字介于 0 和 1 之间?
您的函数定义中似乎缺少一些括号 normalize
:
normalize <- function(x){
return((x-min(x)) / (max(x)-min(x)))
}
我正在尝试在 R 中按组对数据帧进行归一化。我这样做的原因是因为我想 运行 每个组的收入回归方程并希望获得斜率。因为数据不是正态分布的,所以我想按组对数据集进行归一化,以便更好地了解趋势。
我用来规范化数据集的函数如下:
normalize <- function(x){
return((x-min(x)) / max(x)-min(x))
}
我知道 R 中还有另一个已经内置的函数,叫做 scale
。
我的数据名是这样的:
df
Date Partner Revenue
1 2017-03-01 A 33121
2 2017-03-02 A 32758
3 2017-03-03 A 34675
4 2017-03-04 A 32407
5 2017-03-05 A 30851
6 2017-03-06 A 33248
7 2017-03-07 A 34288
8 2017-03-08 A 33820
9 2017-03-09 A 36021
10 2017-03-10 A 38757
11 2017-03-11 A 41149
12 2017-03-12 A 36203
13 2017-03-13 A 41167
14 2017-03-14 A 50237
15 2017-03-15 A 48463
16 2017-03-01 B 2123
17 2017-03-02 B 1684
18 2017-03-03 B 1246
19 2017-03-04 B 1099
20 2017-03-05 B 2314
21 2017-03-06 B 1565
22 2017-03-07 B 1610
23 2017-03-08 B 1749
24 2017-03-09 B 1917
25 2017-03-10 B 1784
26 2017-03-11 B 1662
27 2017-03-12 B 1748
28 2017-03-13 B 1452
29 2017-03-14 B 880
30 2017-03-15 B 591
使用归一化函数我尝试了这条路线,但 NEWREV
数字不在 0 和 1 之间。它们的范围是 -30,000 到 -590。
scaled_data <-
df %>%
group_by(`Partner`) %>%
mutate(NEWREV = normalize(Revenue))
我如何按组调整收入,使数字介于 0 和 1 之间?
您的函数定义中似乎缺少一些括号 normalize
:
normalize <- function(x){
return((x-min(x)) / (max(x)-min(x)))
}