나는 계절별로 일부 날짜의 하위 집합을 만들고 각 계절에 대해 '날짜 및 진폭'의 월별 플롯을 결합하려고합니다.데이터 프레임 목록에서 열을 플롯
head(dat)
Date Amplitude
1 2009-09-13 -2.6966667
2 2009-09-14 -0.7264583
3 2009-09-15 -2.1823333
여기 내 코드는 플롯 타이틀 계절과 월 (1 년 기준)을 만들 수있다 :
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
내가 for 루프로 데이터 프레임을 각 시즌의 데이터 프레임을 생성하기 위해 분할을 사용하고 이름
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() 패밀리를 사용하여 계절 목록을 순차적으로 나열하고 각 데이터 프레임의 날짜 및 진폭 열을 선택하고 'YearMonth'로 플로팅하십시오.
내가 가진 문제는 아마도 구문과 관련되어 있습니다. 나는 R과 프로그래밍에 익숙하지 않습니다. 그러나 나는 지난 며칠간 포럼을 수색하는데 보냈으며이 시점에서 어떤 방향으로 나아질 것입니다. 감사!
문제는 'ggplot' 호출이 제대로 작동하지 않는다는 것입니다. – keegan
ggplot 호출이 정상적으로 작동합니다. 수동으로 입력하지 않고 ggplot 호출에 각 시즌을 전달하면서 데이터 프레임 목록을 따라 시퀀스를 만들고 싶습니다. 즉 계절별로 나누기, $ YearMonth로 나누기, ggplot으로 전달. 모두 하나로 말이 돼? –
어쩌면 각 계절에 해당하는 데이터 프레임 목록이 있습니까? 당신은 매 시즌 (각 패널은 YearMonth 임)의 플롯 그리드를 원하십니까, 아니면 매년 YearMonth에 대해 완전히 독립적 인 플롯을 원하십니까? – keegan