【问题标题】:How do I transform a data into long/horizontal format?如何将数据转换为长/水平格式?
【发布时间】:2021-12-18 20:57:05
【问题描述】:

正如问题的主题所暗示的,我有以下数据集,可能是横截面的。请参阅下面的代码,

   W1        W2        W3        (…) 
P1  11  12  10  8   13  12  14  21  6   
P2  7   6   3   2   7   1   6   3   3   
P3  7   11  8   9   10  8   7   13  12  
P4  12  8   13  5   9   6   9   13  13  
P5  8   5   13  11  6   7   9   14  9   
P6  3   3   2   7   6   3   8   6   6   
6 rows | 1-10 of 52 columns

假设我们有变量 W 代表周,P 代表产品。我的问题: 如何以我拥有带有变量的长数据集的方式转换我的数据集:时间(以周为单位)产品(销售)如下:

Time Product_Number Product_Sales
    W1      P1             20
    W2      P2              5     
    (...)   (...)         (...)   

【问题讨论】:

    标签: r panel-data


    【解决方案1】:

    我们可能会使用

    as.data.frame(as.table(as.matrix(df1)))
    

    【讨论】:

      【解决方案2】:
      data <- data.frame(id=c("p1","p2","p3","p4","p5"),
                         w1=c(11,2,3,5,7),
                         w2=c(13,5,3,6,7),
                         w3=c(30,2,3,8,7))
      
      data
      
      library(dplyr)
      library(tidyr)
      
      data %>% pivot_longer(cols = c(2:4))
      

      【讨论】:

        【解决方案3】:

        如果您更喜欢使用data.table,另一种解决方案是使用melt 函数将您的数据从宽更改为长。使用 Nicolas 的示例数据:

        library(data.table)
        
        data <- data.frame(id=c("p1","p2","p3","p4","p5"),
                           w1=c(11,2,3,5,7),
                           w2=c(13,5,3,6,7),
                           w3=c(30,2,3,8,7))
        
        data_wide <- as.data.table(data)
        data_long <- melt(data_wide, id.vars = 'id', variable.name = 'weeks', value.name = 'sales')
        data_long
        #>     id weeks sales
        #>  1: p1    w1    11
        #>  2: p2    w1     2
        #>  3: p3    w1     3
        #>  4: p4    w1     5
        #>  5: p5    w1     7
        #>  6: p1    w2    13
        #>  7: p2    w2     5
        #>  8: p3    w2     3
        #>  9: p4    w2     6
        #> 10: p5    w2     7
        #> 11: p1    w3    30
        #> 12: p2    w3     2
        #> 13: p3    w3     3
        #> 14: p4    w3     8
        #> 15: p5    w3     7
        

        reprex package 创建于 2021-11-04 (v2.0.1)

        【讨论】:

          猜你喜欢
          • 2019-04-13
          • 1970-01-01
          • 2019-08-14
          • 1970-01-01
          • 1970-01-01
          • 2020-05-04
          • 2022-11-29
          • 2018-10-19
          • 1970-01-01
          相关资源
          最近更新 更多