R 用星期几创建一个虚拟变量

R Create a Dummy Variable with the Day of Week

我想为我的数据框创建一周中所有日子的 7 个虚拟变量。我的数据框 "BTC.USD" 包含以美元表示的比特币时间序列数据(收盘价 = 收盘价):

# A tibble: 6 x 3
Date       Close Wday 
<date>     <dbl> <ord>
1 2015-12-31  430. Do   
2 2016-01-01  434. Fr   
3 2016-01-02  434. Sa   
4 2016-01-03  431. So   
5 2016-01-04  433. Mo   
6 2016-01-05  431. Di  

(Wday 的缩写是德语)
如何为一周中的几天添加 7 个带有虚拟变量的新列? 使用映射函数还是应用函数更好?

您可以使用 weekdays() 查找星期几,然后 dcast()

tt <- "date close
2015-12-31  430   
2016-01-01  434   
2016-01-02  434   
2016-01-03  431   
2016-01-04  433   
2016-01-05  431"

d <- read.table(text=tt, header=T, stringsAsFactors = F)

library(dplyr) # for mutate() and `%>%`
library(data.table) # for dcast()
d %>% 
  mutate(date = as.Date(date)) %>% 
  mutate(weekday = weekdays(date)) %>% 
  dcast(date + close ~ weekday, fun.aggregate = length)