我正在处理一些日期,需要将实际日期转换为星期几。我正在使用weekdays()
函数,并且超过13天的任何一天都在生成NA
。
example<-c("1/1/2000","1/3/2000","1/13/2000","1/15/2000","2/3/2000","2/8/2000","2/29/2000")
example<-weekdays(as.Date(example))
example
#[1] "Saturday" "Tuesday" NA NA "Wednesday" "Tuesday"
#[7] NA
无论哪个月或一年,第13号下的每一天都会产生正确的输出,但是13号下的每一天都不会产生正确的输出。
答案 0 :(得分:2)
只需为format
指定as.Date
example<-c("1/1/2000","1/3/2000","1/13/2000","1/15/2000","2/3/2000","2/8/2000","2/29/2000")
weekdays(as.Date(example, format = "%m/%d/%Y"))
#[1] "Saturday" "Monday" "Thursday" "Saturday" "Thursday" "Tuesday" "Tuesday"
as.Date
实际上试图猜测格式;看看tryFormats
时,您会看到不同的"%Y-%m-%d"
("%Y/%m/%d"
和?as.Date
)。
一种无忧无虑的替代方法是使用anytime
library(anytime)
weekdays(anydate(example))
#[1] "Saturday" "Monday" "Thursday" "Saturday" "Thursday" "Tuesday" "Tuesday"
答案 1 :(得分:0)
总的猜想没有看并且血液中的咖啡因不足...您的日期布局预期为DD / MM / YYYY,因此对于MM> 12的任何内容都会被拒绝。
我认为您可以指定实际的输入日期格式,但是再次输入足够的咖啡。
答案 2 :(得分:0)
我喜欢使用lubridate
导入日期,它比format
中的as.Date
参数更容易记住
这里您显然有月份/日期/年,要获得适当的润滑功能,只需保留月份/日期/年的首字母:mdy
library(lubridate)
example_dates <- mdy(example)
weekdays(example_dates)
#[1] "Saturday" "Monday" "Thursday" "Saturday" "Thursday" "Tuesday" "Tuesday"