嗨,这是我的样本数据。数据代表以英亩为单位收获的州的面积。
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代码,但我没有使用融合功能的运气。任何帮助表示赞赏!
答案 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)