【问题标题】:Reshaping data with melt用熔体重塑数据
【发布时间】:2015-11-25 06:29:06
【问题描述】:

您好,这是我的示例数据。数据代表一个州的收割面积,以英亩为单位。

State         1974   1978    1982    1987
Alabama        0      0        6      149    
Alaska         3      4        39     140
Arizona        700    200     3000   11000
Arkansas       0      10       20      30


State          Year       Acres      Hectares  
Alabama        1974         0          0
Alabama        1978         0          0
Alabama        1982         6          2.42
Alabama        1987         149        60.30

我正在尝试重塑它,以便它记录每个单独的观察结果,并将公顷也包括在内,四舍五入到小数点后 2 位(1 公顷= 2.47 英亩)

colnames(x) <-  c('state',1974,1978,1982,1987)
library(reshape2)
m <-  melt(broccoli,id='state')
colnames(m) <-  c('state','year','acres')

这是我运行的 R 代码,但我没有任何运气使用融化功能。任何帮助表示赞赏!

【问题讨论】:

  • melt 有什么问题。它给出了三列,对吧?如果您需要公顷专栏,transform(m, Hectares = Acres*2.47)
  • 融化功能确实有效。我有 3 列。当我使用转换函数时,它在控制台中显示了结果,但是在数据表中,没有添加一个公顷列
  • 您需要分配它,即m &lt;- transform(m, Hectares= Acres/2.47),但更简单的方法是m$Hectares &lt;- m$Acres/2.47
  • 天哪,是的,我现在明白了。谢谢,这很有意义!

标签: r melt


【解决方案1】:

我们可以transform 创建Hectares 列

transform(m, Hectares = Acres/2.47)

如果我们使用data.table

 library(data.table)
 melt(setDT(broccoli), id.var='State', variable.name='Year',
        value.name='Acres')[, Hectares := Acres/2.47][]

【讨论】:

    【解决方案2】:

    我发现整理更容易

    library(dplyr)
    library(tidyr)
    
    data %>%
      gather(Year, Acres, -State) %>%
      mutate(Hectares = Acres * 2.47)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 2018-04-15
      相关资源
      最近更新 更多