在R中将日期转换为星期几

5
我在数据框中有一个以这种格式表示的日期:

"02-July-2015"

我需要将其转换为星期几(即183)。类似于:
df$day_of_week <- weekdays(as.Date(df$date_column))

但是它不理解日期的格式。

1
7月2日是哪一年?这个日期在不同的年份会落在不同的星期几。 - MrFlick
as.Date函数的格式参数不是weekday。另外,我认为as.Date函数只接受缩写月份。July -> Jul - user1309940
我明白了,谢谢。这会给出日期,而不是数字,但这容易转换。 - Cybernetic
2
另一个选项是 strftime(as.Date("02-Jan-2015",format = "%d-%b-%Y"), format = "%j") - user1309940
@Cybernetic,你的问题要求星期几,但是以一年中的日期作为例子,你可能需要编辑问题以澄清(即使两者都需要)。 - steveb
显示剩余4条评论
3个回答

8
你可以使用 lubridate 将日期转换为星期几或一年中的第几天。
library(lubridate)

# "02-July-2015" is Thursday
date_string <- "02-July-2015"
dt <- dmy(date_string)
dt
## [1] "2015-07-02 UTC"

### Day of week : (1-7, Sunday is 1)
wday(dt)
## [1] 5

### Day of year (1-366; for 2015, only 365) 
yday(dt)
## [1] 183

### Or a little shorter to do the same thing for Day of year
yday(dmy("02-July-2015"))
## [1] 183

3
day = as.POSIXct("02-July-2015",format="%d-%b-%Y")

# see ?strptime for more information on date-time conversions

# Day of year as decimal number (001–366).
format(day,format="%j")
[1] "183"

#Weekday as a decimal number (1–7, Monday is 1).
format(day,format="%u")    
[1] "4"

1
这就是另一个鱼人的想法,还需要将值转换为as.numeric以便通过分类器。
# day <- Sys.time()
as.num.format <- function(day, ...){
   as.numeric(format(day, ...))
}
doy <- as.num.format(day,format="%j")
doy <- as.num.format(day,format="%u")
hour <- as.num.format(day, "%H")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接