2015-07-31 7 views
2

У меня есть dataframe (NBA_Data), который составляет 27 538 на 29. Один из столбцов называется «месяц», и есть восемь месяцев (октябрь: июнь). Я хотел бы написать функцию, которая автоматически подмножает этот кадр данных по месяцам, а затем создает 8 сюжетных объектов в ggplot2. Я выхожу из своей глубины здесь, но я думаю, что они будут храниться в одном списке («Мои сюжеты»).Функция создания нескольких графиков подмножествами фрейма данных

Я планирую использовать geom_plot для каждого сюжетного объекта для построения точек против минут. Я не знаком с grid.arrange, но я предполагаю, что когда у меня есть «Мои сюжеты», я мог бы использовать это (в некоторой форме) в качестве аргумента для grid.arrange.

Я пробовал:

empty_list <- list() 
    for (cat in unique(NBA_Data$month)){ 
     d <- subset(NBA_Data, month == cat) 
    empty_list <- c(empty_list, d) 
    } 

Это дает непрерывный список, который повторяет все 29 столбцов для каждого месяца, с длиной 261. Не идеальный, но работоспособной может быть. Затем я пытаюсь использовать lapply, чтобы разбить список, но я его испортил.

lapply(empty_list, split(empty_list, empty_list$month)) 

Error in match.fun(FUN) : 
'split(x = empty_list, f = empty_list$month)' is not a function, character or symbol 
In addition: Warning message: 
In split.default(x = empty_list, f = empty_list$month) : 
data length is not a multiple of split variable 

Любые предложения? Спасибо.

ответ

2

Вы можете использовать разделение на порцию набор данных в список уже:

list <- split(data, data$month) 

Также вы можете использовать facet_wrap сделать несколько графиков на одной странице с теми же данными, если вы используете ggplot.

library(ggplot2) 
ggplot(data, aes(x = PlayerName, y = PPG)) + geom_point() + facet_wrap(~month) 
+0

10 facet_wrap! красивая ! –

Смежные вопросы