Я пытаюсь подобрать некоторые даты в сезон, а затем объединять ежемесячные графики «даты и амплитуды» для каждого сезона.Графические столбцы из списка фреймов данных
head(dat)
Date Amplitude
1 2009-09-13 -2.6966667
2 2009-09-14 -0.7264583
3 2009-09-15 -2.1823333
Вот мой код для создания сезонов и годМесяца для названия участка:
x <- as.Date(dat$Date, format="%Y/%m/%d")
x <- as.Date(x, origin="2009-09-13")
x <- cut(x, breaks="quarter")
labs <- paste(substr(levels(x),1,4),"/",1:4, sep="")
dat$DateQ <- factor(x, labels=labs)
dat$YearMonth <- format(dat$Date, "%Y/%m")
head(dat)
Date Amplitude DateQ YearMonth
1 2009-09-13 -2.6966667 2009/1 2009/09
2 2009-09-14 -0.7264583 2009/1 2009/09
Я использовал раскол, чтобы создать кадры данных для каждого сезона, а затем назвал кадры данных с циклом
dat_split_season <- split(dat, dat$DateQ)
new_names <- c("Summer_2009", "Fall_2009", "Winter_2010", "Spring_2010",
"Summer_2010", "Fall_2010", "Winter_2011",
"Spring_2011", "Summer_2011", "Fall_2011",
"Winter_2012", "Spring_2012", "Summer_2012")
for (i in 1:length(dat_split_season)) {
assign(new_names[i], dat_split_season[[i]])
}
Я могу создать желаемые месячные графики по сезонам вручную, изменив df
df <- Winter_2012
graphs <- lapply(split(df,df$YearMonth),
function(gg) ggplot(gg, aes(x=Date, y=Amplitude)) +
geom_point() + geom_line() + ylim(-10, 10) +
ggtitle(paste(gg$YearMonth)) + theme_bw())
do.call("grid.arrange", graphs)
Я хотел бы использовать цикл for или семейства apply() для последовательности по списку сезонов, выбрав столбцы Date и Amplitude для каждого кадра данных и построения графика по 'YearMonth'.
Проблема, с которой я сталкиваюсь, вероятно, связана с синтаксисом; Я новичок в R и программировании в целом. Но я провел последние несколько дней, прочесывая форум, и я бы оценил какое-то направление на этом этапе. Благодаря!
так что проблема в том, что ваш вызов 'ggplot' работает некорректно? – keegan
ggplot call отлично работает - я хочу упорядочить по списку кадров данных, передавая каждый сезон вызову ggplot без ввода вручную. т. е. разделить время на сезон, разделить сезон на $ YearMonth, перейти к ggplot. Все в одном. Имеет ли это смысл? –
Возможно, у вас есть список dataframes, каждый из которых является сезоном? Вы хотите, чтобы сетка графиков для каждого сезона (каждая панель была YearMonth), или вы хотите полностью независимые сюжеты для каждого YearMonth? – keegan