用融化重塑数据

时间:2015-11-25 06:29:06

标签: r melt

嗨,这是我的样本数据。数据代表以英亩为单位收获的州的面积。

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

我试图对其进行重塑,以便记录每个单独的观察结果,并将公顷列为一列,四舍五入到小数点后两位(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代码,但我没有使用融合功能的运气。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

我们可以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][]

答案 1 :(得分:1)

我觉得tidyr更容易

library(dplyr)
library(tidyr)

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