ggplot, использующий функциональность facet_wrap при отображении статистики из нескольких data.frame в R? - PullRequest
0 голосов
/ 21 марта 2020

Для одного , который имеет несколько переменных, я использовал следующий код для вычисления статистики и построения графиков.

library(tidyverse)

DF1 <- data.frame(seq(as.Date("2001-01-01"), to= as.Date("2003-12-31"), by="day"),
                  MaxTemp = runif(1095,-5,20),
                  MinTemp = runif(1095,-8,15),
                  MeanTemp = runif(1095,-10,10),
                  DF = rep("DF1",1095))
colnames(DF1) <- c("Date", "MaxTemp","MinTemp","MeanTemp","DF")
DF_1 <- DF1 %>%  mutate(JDay = yday(Date)) %>% 
  group_by(JDay) %>% 
  summarise(AveMaxTemp = mean(MaxTemp, na.rm = T),
            AveMinTemp = mean(MinTemp, na.rm = T),
            AveMeanTemp = mean(MeanTemp, na.rm = T))
DF_1 %>% gather(key = "Variable", value = "Value", -c(JDay)) %>% 
  ggplot(aes(x = JDay, y = Value, col = Variable))+
  geom_line(aes(y = Value))

В случае, У меня есть кратный data.frame (см. пример ниже). Есть ли способ, чтобы объединить два data.frame (то есть DF1 и DF2), вычислить статистику, а затем построить ее, используя [Tag: facet_wrap]?

DF2 <-  data.frame(Date = DF1$Date,
        MaxTemp = runif(1095, -2,15),
        MinTemp = runif(1095,-6,15),
        MeanTemp = runif(1095,-5,10),
        DF = rep("DF2",1095))

Я ищу для участка, как показано ниже

enter image description here

1 Ответ

2 голосов
/ 21 марта 2020

попробуйте сделать это

DF3 <- bind_rows(DF1, DF2)

DF_3 <- DF3 %>% 
  mutate(JDay = yday(Date)) %>% 
  group_by(JDay, DF) %>% 
  summarise(AveMaxTemp = mean(MaxTemp, na.rm = T),
            AveMinTemp = mean(MinTemp, na.rm = T),
            AveMeanTemp = mean(MeanTemp, na.rm = T))

DF_3 %>% gather(key = "Variable", value = "Value", -c(JDay, DF)) %>% 
  ggplot(aes(x = JDay, y = Value, col = Variable)) +
  geom_line(aes(y = Value)) +
  facet_wrap(~ DF)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...