установить подкадр данных на основе года и месяца - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу разместить свой фрейм данных с сентября 2017 года по апрель 2018 года. Мой фрейм данных выглядит так: -

Year    Month   Day    Avg_Temp
2017    8       31      20
2017    9       1       22
.
.
.
2018    4       30      26
2018    5        1      30

Я хочу, чтобы мой набор данных с 1 сентября 2017 года по 30 апреля 2018 года.

Year    Month   Day    Avg_Temp
2017    9       1       22
.
.
.
2018    4       30      26

на основании только того года, когда я должен сделать подмножество.

df <-df[df$YEAR>="2017" & df$YEAR<="2018", ]

Но мне нужно также подмножество из месяца. Любая помощь будет отличной

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

Возможно, было бы проще, если бы три компонента даты были закодированы в один столбец Date:

df$Date <- as.Date(paste(df$Year, df$Month, df$Date, sep = '-'))
df$Year <- NULL
df$Month <- NULL

df <- df[df$Date > as.Date('2017-09-01') & df$Date < as.Date('2018-04-01'), ]
0 голосов
/ 13 ноября 2018

Вот подход dplyr:

 require(tidyverse)
   df<-data.frame(Year=c(2018,2017,2017,2017,2018,2018,2018),
               Month=c(9,8,10,4,9,3,4),Day=c(13,12,14,15,17,15,14))
df %>% 
  filter(Year==2017&Month>=9|Year==2018&Month<=4)

Что дает это:

       Year Month Day
1      2017     9  14
2      2018     3  15
3      2018     4  14
0 голосов
/ 13 ноября 2018

Попробуйте эту опцию:

df <- df[(df$Year == 2017 & df$Month >= 9) |
         (df$Year == 2018 & df$Month <= 4), ]

Кстати, вы можете рассмотреть вопрос о сохранении ваших дат в качестве правильного типа даты, включая дневной компонент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...