2017-03-17 101 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))) 
}