2015-11-11 2 views
1

Как применить простую статистику к данным и построить их изящно по годам с использованием базовой системы построения R и функций по умолчанию? База данных довольно тяжелая, поэтому не генерировать новые переменные предпочтительнее.R графики: простая статистика по данным по годам. Базовый пакет

Я надеюсь, что это не глупый вопрос, но мне интересно об этой проблеме, не найдя конкретное решение, не предполагающее дополнительные пакеты, такие как ggplot2, dplyr, lubridate, такие как те, которые я нашел на сайте:

ggplot2: Group histogram data by year

R group by year

Split data by year

использование систем R по умолчанию связан с дидактическими целями. Я думаю, что это может быть важная подготовка, прежде чем включать более «удобные» R-пакеты.

Рассмотрим простой набор данных:

> prod_dat 

lab  year  production(kg) 

1  2010  0.3219 
1  2011  0.3222 
1  2012  0.3305 
2  2010  0.3400 
2  2011  0.3310 
2  2012  0.3310 
3  2010  0.3400 
3  2011  0.3403 
3  2012  0.3410 

Я хотел бы построить с гистограммой, скажем, общий объем производства материала в течение определенного года.

> hist(sum(prod_dat$production[prod_dat$year == c(2010, 2013)])) 

К сожалению, это моя лучшая попытка, и это TRow ошибка:

in prod_dat$year == c(2010, 2012): 
longer object length is not a multiple of shorter object length 

Я действительно из маршрута, следовательно, любое предложение может превратиться в использовании.

+0

Вы делаете свой выбор подмножества-неправильно. С несколькими аргументами в булевом сравнении сегмент получает рециркуляцию (так что год по сравнению с 2010 годом, годом два-2013, третий год и т. Д.). Следовательно, ошибка об объектных длинах. Вы можете сделать 'year% in% ....' или 'year == a | year == b'. – Heroka

+0

'с (prod_dat, hist (production [year% in% c (2010, 2013)]))' – rawr

+0

@Heroka, спасибо за подтверждение. Я был почти уверен, что проблема в этом. Считаете ли вы, что команда, реализованная с вашим предложением (и rawr's), может стать хорошим решением? Извините печальное форматирование, я до сих пор не понимаю, как сообщать фрагменты кода в комментариях! hist (sum (prod_dat $ production [prod_dat $ year% in% c (2010, 2013)])) – Worice

ответ

1

без ggplot Я использовал, чтобы сделать это так, но есть умнее, как я думаю

all <- read.table(header = TRUE, stringsAsFactors = FALSE, text = "lab  year  production 

        1  2010  1 
        1  2011  0.3222 
        1  2012  0.3305 
        2  2010  0.3400 
        2  2011  0.3310 
        2  2012  0.3310 
        3  2010  0.3400 
        3  2011  0.3403 
        3  2012  0.3410") 




ar <- data.frame(year = unique(all$year), prod = tapply(all$production, list(all$year), FUN = sum)) 
barplot(ar$prod) 

enter image description here

+0

Это не решает проблему с ошибкой/ошибкой выбора. – Heroka

+1

ОК, я удалю – Mateusz1981