2017-03-17 66 views
0

我试图在R中按组归一化数据框。我之所以这样做是因为我想对每个组的收入运行回归方程,并希望获得斜率。由于数据不是正态分布的,我想按组对数据集进行归一化处理,以更好地读取趋势。通过R中的规范化

的功能,我使用标准化的数据集如下:

normalize <- function(x){ 
    return((x-min(x))/max(x)-min(x)) 
} 

我知道有R中的另一个已建成的函数调用scale

我datafame看起来是这样的:

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之间?

回答

1

它看起来像你缺少你的函数normalize的定义一些括号:

normalize <- function(x){ 
    return((x-min(x))/(max(x)-min(x))) 
}