我有2018-01-01
到2018-06-01
每一天的清单。它是一个向量,看起来像这样:
dates <- c("2018-01-01", "2018-01-02", "2018-01-03", ... , "2018-05-30", "2018-06-01")
我想制作一个数据框,其中第一列包含每个日期,第二列包含其星期几。我假设2018-01-01
是星期一。
date day
2018-01-01 Monday
2018-01-02 Tuesday
2018-01-03 Wednesday
... ...
2018-06-01 Monday
我正在为此目的而设计一个数据框架,但我想知道一种比我提出的解决方案更好的方法,可以在一周中的每一天中进行回收。
day <- NULL
for (i in 1:length(dates)) {
x <- i
while (x > 7) {
x <- i - 7
}
day <- c(day, days[x])
}
cbind(dates,day)
答案 0 :(得分:0)
我们可以使用weekdays
来获取星期几并将其放入数据框中。
data.frame(dates, day = weekdays(dates))
# dates day
#1 2018-01-01 Monday
#2 2018-01-02 Tuesday
#3 2018-01-03 Wednesday
#4 2018-05-30 Wednesday
#5 2018-06-01 Friday
编辑
如果我们不想使用任何内置函数,则可以创建一个日向量并从中查找。考虑到第一天是“星期一”,我们可以使用模运算符来查找其余dates
days <- c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")
day <- days[(as.numeric(dates - dates[1]) %% 7) + 1]
day
#[1] "Monday" "Tuesday" "Wednesday" "Wednesday" "Friday"
然后将其放入数据框
data.frame(dates, day)
# dates day
#1 2018-01-01 Monday
#2 2018-01-02 Tuesday
#3 2018-01-03 Wednesday
#4 2018-05-30 Wednesday
#5 2018-06-01 Friday
数据
dates<-as.Date(c("2018-01-01","2018-01-02","2018-01-03","2018-05-30","2018-06-01"))