2015-11-25 4 views
1

Привет, это мои данные образца. Данные представляют собой область состояния, собранную в акров.Реформирование данных с расплавом

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 Code я побежал, но мне не повезло с использованием функции расплава. Любая помощь приветствуется!

+0

В чем проблема с го «расплавить». Он дает три столбца, верно ?. Если вам нужен столбец Hectares, 'transform (m, Hectares = Acres * 2.47)' – akrun

+0

Фактически работала функция расплава. У меня было 3 колонки. Когда я использовал функцию преобразования, он показал результаты в консоли, но в таблице данных столбец гектара не был добавлен – jyu1992

+0

Вам необходимо назначить его, т. Е. 'M <- transform (m, Hectares = Acres/2.47)' Но более простым способом будет 'm $ Hectares <- m $ Acres/2.47' – akrun

ответ

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][] 
+0

@thelatemail Спасибо, исправил его. – akrun

1

Я нахожу tidyr легче

library(dplyr) 
library(tidyr) 

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