Избегайте повторяющихся, похожих анализов и сюжетов - PullRequest
0 голосов
/ 27 января 2020

У меня есть таблица с множеством переменных. Одна из переменных содержит информацию о году: с 1999 по 2010 год. Мне нужно проводить для каждого года один и тот же анализ, например, для построения графика, гистограммы и т. Д. c. В настоящее время я подгруппирую данные так, чтобы каждый год входил в таблицу данных (таблицу), и я делаю анализ по очереди для каждого года. Это очень неэффективно:

dates <- (sample(seq(as.Date('1999/01/01'), as.Date('2010/01/01'), by="day"), 50, replace = TRUE))
dt<-data.table( YEAR = format.Date(dates,"%Y"),
                Var1=sample(0:100, 50, rep=TRUE),
                Var2 =sample(0:500, 50, rep=TRUE)

)
year_1999<-dt[YEAR=="1999"]
plot_1999<- ggplot(year_1999, aes (x=Var1))+ 
  geom_line(aes(y=Var2), size=1, color="blue") +
  labs(y="V2", x="V1", title="Year 1999")

plot_1999

Как мне лучше написать это компактно? Полагаю, мне нужна функция, но я не знаю, как это сделать.

Ответы [ 2 ]

4 голосов
/ 27 января 2020

Вместо повторения кода несколько раз, мы можем указать «ГОД» в facet_wrap

library(ggplot2)    
ggplot(dt, aes(x = Var1, y = Var2)) + 
    geom_line(aes(size = 1, color = "blue")) + 
    labs(y = "V2", x = "V1") + 
    facet_wrap(~ YEAR)
2 голосов
/ 27 января 2020

Попробуйте, если вы хотите создать отдельный объект графика для каждого уникального года в dt $ YEAR:

for (i in unique(dt$YEAR)) {

 year <- dt[YEAR==i]

  plot <- ggplot(year, aes (x=Var1))+ 
    geom_line(aes(y=Var2), size=1, color="blue") +
    labs(y="V2", x="V1", title="Year 1999")

  assign(paste("plot", i, sep=""), plot)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...