【问题标题】:Reshape data from long to wide with multiple explained variables使用多个解释变量从长到宽重塑数据
【发布时间】:2015-08-24 10:13:38
【问题描述】:

我正在尝试使用 R 转换我的数据框格式。我想要唯一的公司名称,因为它对每个公司都有多个观察结果。我的数据看起来像

company name    Values  Year
    A              1    2010
    A              2    2011
    B              4    2010
    B              6    2012
    C              8    2011

我想要下面的格式

 company name   first_value First_year  second_values second_year
     A              1          2010          2           2011
     B              4          2010          6           2012  
     C              8          2011          NA           NA

我已经尝试过这段代码,但它没有给出我期望的结果

library(plyr)
extract.hashtags <- function(x) {
x <- subset(x,select=c(-Company.Name))
mat <- as.matrix(x)
dim(mat) <- c(1,length(mat))
as.data.frame(mat)
}

df1 = ddply(data, .(Company.Name), extract.hashtags )

【问题讨论】:

    标签: r reshape


    【解决方案1】:

    添加“时间”变量后,您可以在基础 R 中使用reshape,这可以使用我的“splitstackshape”包中的getanID 来完成:

    reshape(getanID(mydf, "companyname"), idvar = "companyname", 
              timevar = ".id", direction = "wide")
    #    companyname Values.1 Year.1 Values.2 Year.2
    # 1:           A        1   2010        2   2011
    # 2:           B        4   2010        6   2012
    # 3:           C        8   2011       NA     NA
    

    【讨论】:

      【解决方案2】:

      使用devel version of data.table (v 1.9.5+) 的类似解决方案

      library(data.table) ## v 1.9.5+
      dcast(setDT(df)[, indx := 1:.N, by = company_name], 
            company_name ~ indx, value.var = c("Values", "Year"))
      
      # c   ompany_name Values_1 Values_2 Year_1 Year_2
      # 1:            A        1        2   2010   2011
      # 2:            B        4        6   2010   2012
      # 3:            C        8       NA   2011     NA
      

      这个想法是为每个组添加一个计数器,然后根据该计数器从长到宽重塑,同时指定两个变量作为解释变量(目前仅在开发版本中可用)。

      【讨论】:

        猜你喜欢
        • 2020-07-12
        • 2018-02-17
        • 1970-01-01
        • 2016-05-25
        • 1970-01-01
        • 2011-03-20
        • 2018-05-05
        • 1970-01-01
        • 2014-05-12
        相关资源
        最近更新 更多