2017-03-17 23 views
0

R에서 그룹별로 데이터 프레임을 정규화하려고합니다. 내가이 작업을 수행하는 이유는 수익을 위해 각 그룹에서 회귀 방정식을 실행하고 슬로프를 얻고 싶기 때문입니다. 데이터가 정상적으로 배포되지 않았기 때문에 그룹별로 데이터 세트를 표준화하여 추세에 대한 더 나은 정보를 얻고 싶습니다. 내가 scale라는 R의 또 다른 이미 내장 기능이 알고그룹별로 정규화하기 R

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

을 다음과 같이

기능 나는 데이터 집합을 정상화하기 위해 사용하고있다. 나는이 길을 시도 정규화 기능을 사용

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 범위 사이에 없습니다 :

내 datafame은 다음과 같습니다.

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))) 
}