Объединение нескольких data.frame в R? - PullRequest
0 голосов
/ 16 марта 2020

Я вычисляю statistics (т. Е. Среднее, максимальное, медианное и т. Д. c) для winter season, состоящего из 11 и 12 месяцев previous year и 1-4 месяцев following year.

mydate <- as.data.frame(seq(as.Date("2010-01-01"), to= as.Date("2019-12-31"), by="day"))
colnames(mydate) <- "Date"
DF <- data.frame(A = runif(3652,0,10), 
                   J = runif(3652,0,8), 
                   X = runif(3652,0,12), 
                   Z = runif(3652,0,10), 
                  mydate)

mydata <- DF %>% mutate(Year = year(Date), Month = month(Date)) %>%
  pivot_longer(-c(Date,Year,Month), names_to = "variable", values_to = "values") %>% 
  filter(Month == 11 | Month == 12 | Month == 01 | Month == 02 | Month == 03 | Month == 04) %>% 
  mutate(W_Year = ifelse(Month > 10, Year+1, Year)) %>% 
  filter(W_Year != 2019) %>% 
  group_by(W_Year, variable) %>% 
  mutate(Cumulative = cumsum(values)) %>%
  mutate(NewDate = ymd(paste("2020", Month, day(Date), sep = "-"))) %>%
  ungroup() %>%
  group_by(variable, NewDate) %>%
  summarise(Median = median(Cumulative))

Затем мне потребуется combine mydata со значениями data.frame из accumulated за последний год, который в моем случае является year 2019 в качестве дополнительного столбца.

X = c("A", "J","X", "Z")

Data2019 <- DF %>% mutate(Year = year(Date), Month = month(Date)) %>%
  pivot_longer(-c(Date,Year,Month), names_to = "variable", values_to = "values") %>% 
  filter(between(Month,5,10)) %>% 
  filter(Year == 2019) %>% 
  group_by(Year, variable) %>% 
  mutate(Precipitation = cumsum(values)) %>%
  mutate(NewDate = ymd(paste("2020", Month,day(Date), sep = "-"))) %>%
  ungroup() %>%
  group_by(variable, NewDate) %>%
  select(c(4,6,7)) %>% 
  slice(match(X, variable))

В то время как combining два data.frame, я получаю mis-match ошибку для количества строк - я считаю, что это связано с leap year, но не знаю, как решить эту проблему. Любой путь вперед поможет. Спасибо,

Data_plot <- data.frame(mydata, Data2019[,2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...