Как узнать, какой день недели дата - PullRequest
1 голос
/ 06 мая 2019

У меня следующая проблема: у меня есть ежедневные биржевые курсы определенной акции, хранящиеся в векторе с датой принадлежности (с 2015 по 2017).

Мне нужно извлечь последнюю биржускорость каждой недели.

Это означает, что мне нужно знать, какой день недели соответствует каждой дате, и сохранить эти показатели в векторе (или удалить другие строки из существующего вектора).Я сделал это с помощью 'wday' (из lubridate), а затем сделал следующее:

 vector<-stochexchangerate
 weekdays<-wday(stockexchangerate)   ## length =35; monday=2,   
 tuesday=3,..

  for(i in 1:10){
       if(weekdays[i]<6){
           vector<-vector[-c(i)]
              }
          }

Но это только приводит к тому, что некоторые «случайные» строки удаляются, и если я запускаю этот код 6 раз, остался только 1 ряд, хотя в пятницу было принято несколько значений.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 06 мая 2019

Да, использование lubridate было хорошим пониманием.Я извлек бы день недели, используя lubridate::wday и аргумент label = TRUE, и отфильтровал бы этот столбец.

Предполагая, что у вас есть кадр данных с 2 столбцами (один для дат и один для значения тарифов)) вы можете сделать:

library(tidyverse)
library(lubridate)

# DATA
#> df <-  tibble(date = mdy("02/15/1980") + 1:300,
#>               value = 1:300)

df %>% 
  mutate(day = wday(date, label = TRUE)) %>% 
  filter(day == "Fri")

#> # A tibble: 42 x 3
#>    date       value day  
#>    <date>     <int> <ord>
#>  1 1980-02-22     7 Fri  
#>  2 1980-02-29    14 Fri  
#>  3 1980-03-07    21 Fri  
#>  4 1980-03-14    28 Fri  
#>  5 1980-03-21    35 Fri  
#>  6 1980-03-28    42 Fri  
#>  7 1980-04-04    49 Fri  
#>  8 1980-04-11    56 Fri  
#>  9 1980-04-18    63 Fri  
#> 10 1980-04-25    70 Fri  
#> # … with 32 more rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...