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)
我想为我的数据框创建一周中所有日子的 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)