如何在R中回收字符向量?

问题描述 投票:0回答:1

我有一个每天从2018-01-012018-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)
r
1个回答
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"))
© www.soinside.com 2019 - 2024. All rights reserved.