11

我经常需要一个包含星期几的向量,但我总是把它打出来:

days.of.week <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")

这很容易,因为它很短,但总是有错别字的可能性。有没有办法以编程方式创建一个包含星期几的向量?

4

5 回答 5

13

一种可能:

days.of.week <- weekdays(Sys.Date()+0:6)

总是从星期一开始:

days.of.week <- weekdays(as.Date(4,"1970-01-01",tz="GMT")+0:6)

或者您可以按照自己的方式定义它,但是在您的.Rprofile, 所以它在启动时总是可用的。

于 2013-04-24T13:45:46.497 回答
13

你去吧,工作日的向量“星期一”,...,“星期日”:

days.of.week <- weekdays(x=as.Date(seq(7), origin="1950-01-01"))
于 2013-04-24T13:47:24.800 回答
0

虽然基于函数的答案很巧妙,但 Joshua 的最后一条评论很到位。如果你有一个经常使用的变量,要么在你的变量中创建它,要么从文件中.Rprofile加载它,使用类似 ..Rdata.Rprofileload('daysofweek.rdata')

请注意,更改一周的第一天就像

neworder <- days.of.week[c(2:7,1)]

于 2013-04-24T15:37:26.033 回答
0

另一种方法是使用weekdayswith ISOdate

weekdays(ISOdate(1, 1, 1:7))
#[1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Saturday"  "Sunday"   

Sys.setlocale并且可以使用其他语言来获取它。

Sys.setlocale("LC_TIME", "de_DE.UTF-8")
#[1] "de_DE.UTF-8"

weekdays(ISOdate(1, 1, 1:7))
#[1] "Montag"     "Dienstag"   "Mittwoch"   "Donnerstag" "Freitag"    "Samstag"    "Sonntag"   

也可以使用format

format(ISOdate(1, 1, 1:7), "%A")
#[1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Saturday"  "Sunday"   

或获取缩写的工作日名称

format(ISOdate(1, 1, 1:7), "%a")
#weekdays(ISOdate(1, 1, 1:7), TRUE) #Alternative
#[1] "Mon" "Tue" "Wed" "Thu" "Fri" "Sat" "Sun"
于 2021-07-15T14:15:42.387 回答
-1

根据今天的日期,我们还可以找到一周中的几天

weekdays(as.Date(seq(7),origin=Sys.Date() - as.POSIXlt(Sys.Date())$wday ))
 [1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Saturday" 
 [7] "Sunday"
于 2015-09-23T11:10:46.563 回答