【问题标题】:R - Calculating annual incrementals across different categoriesR - 计算不同类别的年度增量
【发布时间】:2018-02-19 17:06:01
【问题描述】:

我正在尝试找到一种方法,如何为我的每个数据类别添加一个与上一年相比具有增量变化的列。我的数据示例如下:

  Year CommodityCode Country Value
1 2014 123456        UK      10
2 2014 123456        US      15
3 2014 123457        UK      5
4 2014 123457        US      7
5 2015 123456        UK      11
6 2015 123456        US      16
7 2015 123457        UK      10
8 2015 123457        US      10

而我想要得到的是这样的:

  Year CommodityCode Country Value Change
1 2014 123456        UK      10    NA
2 2014 123456        US      15    NA
3 2014 123457        UK      5     NA
4 2014 123457        US      7     NA
5 2015 123456        UK      11    1
6 2015 123456        US      16    1
7 2015 123457        UK      10    5
8 2015 123457        US      10    3

我正在为一个包含 100 个国家/地区、数百万种不同商品且跨越 10 年的相当大的数据集运行此程序,因此希望代码不会花费太长时间。我对 R 完全陌生,但花了很长时间在谷歌上搜索并找不到任何解决方案 - 如果之前有人问过这个问题,我深表歉意。

提前非常感谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    这就是dplyr 的亮点:

    library("dplyr")
    
    data <- readr::read_delim("Year CommodityCode Country Value
    2014 123456 UK 10
    2014 123456 US 15
    2014 123457 UK 5
    2014 123457 US 7
    2015 123456 UK 11
    2015 123456 US 16
    2015 123457 UK 10
    2015 123457 US 10", 
    delim=" ")
    
    result <- data %>% 
      group_by(Country, CommodityCode) %>% 
      mutate(Change = Value - lag(Value, 1, order_by = Year))
    result
    
    Source: local data frame [8 x 5]
    Groups: Country, CommodityCode [4]
       Year CommodityCode Country Value Change
      <int>         <int>   <chr> <int>  <int>
    1  2014        123456      UK    10     NA
    2  2014        123456      US    15     NA
    3  2014        123457      UK     5     NA
    4  2014        123457      US     7     NA
    5  2015        123456      UK    11      1
    6  2015        123456      US    16      1
    7  2015        123457      UK    10      5
    8  2015        123457      US    10      3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多