相对变化计算

时间:2017-06-16 04:56:41

标签: r dplyr relative reshape2

  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  

对于每一行,我想添加与每个产品相对应的相对变化。例如,对于第1行,产品A的变化是((48 + 18) - (42 + 21))/(42 + 21)= 4.7%,第1行的变化是(48-42)/ 42 = 14%。因此,在新专栏中,我想计算14% - 4.7%= 9.3%。即实际变化% - 产品变更%。 什么是最好的方法

1 个答案:

答案 0 :(得分: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))