【问题标题】:Relative Change Calculation相对变化计算
【发布时间】:2017-06-16 04:56:40
【问题描述】:
  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  

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

【问题讨论】:

  • 您的数据结构对于您打算使用的计算来说似乎非常危险。如果您的数据被意外排序,会发生什么? (也就是说,如果第二行和第一行交换了位置)。我认为您可以从对初始状态和最终状态进行编码的附加列中受益匪浅,因此如果数据混乱,您将始终能够返回到原始状态。

标签: r dplyr reshape2


【解决方案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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多