2017-06-16 50 views
1
Prod T1 T2 
    A 42 48 
    A 21 18 
    B 38 37 
    B 57 68 
    B 38 30 
    C 51 54 
    C 47 49 
    C 22 15 

對於每一行我想添加對應於每個產品的相對變化。 ((48 + 18) - (42 + 21))/(42 + 21)= 4.7%,第1行的變化爲(48-42)/ 42 = 14%。所以在新專欄中,我想計算14% - 4.7%= 9.3%。即實際變化百分比 - 產品變化百分比。 什麼是最好的辦法做到這一點相對變化計算

回答

1

讓我們df是你的data.frame。

我們按行計算更改,按產品計算更改,爲此值創建新列。然後我們進行所需的計算,並只保留一個名爲RelativeChange的新列。

df %>% 
    mutate(by_row = (T2 - T1)/T1) %>% 
    group_by(Prod) %>% 
    mutate(by_prod = (sum(T2) - sum(T1))/sum(T1), 
     RelativeChange = by_row - by_prod) %>% 
    ungroup() %>% 
    select(-c(by_row, by_prod))