Ежедневно выбирайте один час дня для анализа - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть набор данных для почасовых записей за 1 год

для анализа, мне нужно извлекать отдельно для каждого месяца года, каждого часа дня, поэтому январь 00h, январь 01h, январь 02h, январь 03h,...., ..., 21 марта, 22 марта, 23 марта

Заранее благодарим за любую полезную помощь!

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

Код ниже (фильтр, месяц (время) генерирует фатальную ошибку Ошибка: неожиданно ')'in "at <-subset (groenenborgerno, отметка времени = час (время) == 01))" </p>

groenenborgerno$timestamp <- as.POSIXct(groenenborgerno$date, format="%Y-%m-%d %H:%M:%S")
library(lubridate)

january01<-filter(atimeframe, 
       (month(time) == 01 & hour(time) == 01) )

1 Ответ

1 голос
/ 11 апреля 2019

Поскольку данные не предоставлены, я постараюсь ответить на ваш вопрос с примерами данных:

require(lubridate)
require(tidyverse)

## Create some sample data: 
time_index <- seq(from = as.POSIXct("2017-01-01 07:00"), 
                  to = as.POSIXct("2018-01-01 18:00"), by = "hour")
value <- rnorm(n = length(time_index))
data <- data.frame(time_index,value)


data <- data %>% mutate (hour = hour(time_index),
                         month = month(time_index)) %>%
  group_by(month,hour) 

head(data)
> data
# A tibble: 8,772 x 4
# Groups:   month, hour [288]
   time_index           value  hour month
   <dttm>               <dbl> <int> <dbl>
 1 2017-01-01 07:00:00 -0.626     7     1
 2 2017-01-01 08:00:00  0.184     8     1
 3 2017-01-01 09:00:00 -0.836     9     1
 4 2017-01-01 10:00:00  1.60     10     1
 5 2017-01-01 11:00:00  0.330    11     1
 6 2017-01-01 12:00:00 -0.820    12     1
 7 2017-01-01 13:00:00  0.487    13     1
 8 2017-01-01 14:00:00  0.738    14     1
 9 2017-01-01 15:00:00  0.576    15     1
10 2017-01-01 16:00:00 -0.305    16     1
# ... with 8,762 more rows

, а затем просто filter() комбинация часов / месяцев, которую вы хотели бы получить так:

data %>% filter(hour > 12 & month == 1)

# A tibble: 347 x 4
# Groups:   month, hour [11]
   time_index            value  hour month
   <dttm>                <dbl> <int> <dbl>
 1 2017-01-01 13:00:00  0.487     13     1
 2 2017-01-01 14:00:00  0.738     14     1
 3 2017-01-01 15:00:00  0.576     15     1
 4 2017-01-01 16:00:00 -0.305     16     1
 5 2017-01-01 17:00:00  1.51      17     1
 6 2017-01-01 18:00:00  0.390     18     1
 7 2017-01-01 19:00:00 -0.621     19     1
 8 2017-01-01 20:00:00 -2.21      20     1
 9 2017-01-01 21:00:00  1.12      21     1
10 2017-01-01 22:00:00 -0.0449    22     1
# ... with 337 more rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...