【问题标题】:Convert data from many rows to many columns [duplicate]将数据从多行转换为多列[重复]
【发布时间】:2010-11-13 05:52:02
【问题描述】:

我有以标准化方式从数据库中出来的数据,其中包含年份、状态和值的字段。

我想对数据进行分析,并需要将其格式化,其中每年是一个字段而不是记录。所以我想要每个记录是一个状态的数据,然后每个年份和每个值都有一个字段那些字段是那一年和那个州的值。

有执行此操作的命令吗?

所以我有:

State  Year  Value  
   KY  1998     56  
   KY  1997     78  
   IL  1998     48  
   IL  1997     72

我想要:

State  1997_value  1998_value  
   KY          78          56  
   IL          72          48

【问题讨论】:

    标签: r reshape


    【解决方案1】:

    您想使用reshape() 函数。

    reshape(data, idvar="State", timevar="Year", direction="wide")
    

    【讨论】:

      【解决方案2】:

      另一种选择是使用由无与伦比的 Hadley Wickham 创建的 reshape

      library(reshape)
      
      tuna<-melt(data,id.vars=c("State","Year"))
      
      cast(tuna,State~Year~variable)
      

      【讨论】:

        【解决方案3】:

        您甚至可以将熔化和铸造线组合成一个对 recast 函数的调用。

        ds <- data.frame(State = c("KY", "KY", "IL", "IL"), 
        Year = c(1998, 1997, 1998, 1997), 
        Value = c(56, 78, 48, 72))
        
        library(reshape)
        recast(ds, State ~ Year, id.var = c("State", "Year"))
        

        【讨论】:

        • 在这种情况下,数据已经处于熔化状态,因此您可以跳过熔化步骤。
        猜你喜欢
        • 2019-02-17
        • 1970-01-01
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-22
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多