我遇到了以下问题:我将某个份额的每日股票汇率存储在具有归属日期(从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行。谁能帮我吗?
答案 0 :(得分:0)
是的,使用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