Подмножество кадра данных на основе числовых значений строки внутри переменной - PullRequest
0 голосов
/ 02 июля 2019

У меня есть фрейм данных, который представляет собой временной ряд метеорологических измерений с ежемесячным разрешением с 1961 по 2018. Мне интересна переменная, которая измеряет среднемесячную температуру, поскольку мне нужна многолетняя средняя температура для лет.

Для этого я должен отфильтровать из столбца «DateVaraible» пятую и шестую цифры, которые являются месяцем.Значения в столбце времени отформатированы следующим образом: «19610701».Поэтому мне нужен 07 (Juli) после 1961 года.

Я начинаю кодировать 1 месяц для других целей, поэтому я не пробовал ничего заслуживающего упоминания.Я думаю, что .grepl мог бы сделать работу, но я не знаю, как работает оператор «соответствия».

Итак, я начал с этого кода, который работает.

summersmonth<- Df[DateVariable %like% "19610101" I DateVariable %like% "19610201"]

Я ожидаю код, подобный этому

summermonths <- Df[DateVariable %like% "**06**" I DateVariable%like% "**07**..]

Так что все записи с месяцами цифры от 06 до09 сохраняются в новом фрейме летних месяцев.

Заранее благодарен за любой ответ или отзыв относительно моего вопроса.

Обновление

Спасибо за ваши ответыЯ получил первую часть, которая заключается в преобразовании переменной в as.date в формате «месяц» (Class = char). Теперь мне нужно выбрать месяцы с июня по сентябрь.Ужасный способ получить желаемый результат - это сделать несколько subset и rbind впоследствии.

Sommer1<-subset(Df, MonthVar == "Mai")
Sommer2<-subset(Df, MonthVar == "Juli")
Sommer3<-subset(Df, MonthVar == "September")

SummerTotal<-rbind(Sommer1,Sommer2,Sommer3)

Я был бы очень рад увидеть это написанным аккуратно.

Обновление 2 - Решение

Вот простой способ, как здесь Использование нескольких критериев в функции подмножества и логических операторах

Veg_Seas<-subset(Df, subset = MonthVar %in% c("Mai","Juni","Juli","August","September"))

Ответы [ 2 ]

7 голосов
/ 02 июля 2019

Вы можете преобразовать переменную даты в качестве даты (формата) и взять месяц:

allmonths <- month(as.Date(Df$DateVariable, format="%Y%m%d"))

Обратите внимание, что ваш столбец был изначально импортирован как factor, вам необходимо сначала преобразовать его в character:

allmonths <- month(as.Date(as.character(Df$DateVariable), format="%Y%m%d"))

Тогда вы можете проверить, является ли это летним месяцем:

summersmonth <- Df[allmonths %in% 6:9, ]

Пример:

as.Date("20190702", format="%Y%m%d")
[1] "2019-07-02"

month(as.Date("20190702", format="%Y%m%d"))
[1] 7
0 голосов
/ 02 июля 2019

Мы можем использовать anydate из anytime для преобразования в Date класс и затем извлечь month

library(anytime)
month(anydate(as.character(Df$DateVariable)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...