如何创建包含一周中几天的向量?

时间:2013-04-24 13:40:36

标签: r

我需要一个包含一周中几天的向量,但我总是输入:

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

这很简单,因为它很短,但总是存在拼写错误的可能性。有没有办法以编程方式创建包含一周中几天的向量?

5 个答案:

答案 0 :(得分:12)

你去,工作日的星期一“星期一”,......,“星期天”:

days.of.week <- weekdays(x=as.Date(seq(7), origin="1950-01-01"))

答案 1 :(得分:11)

一种可能性:

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

始终在星期一开始:

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

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

答案 2 :(得分:0)

虽然基于功能的答案很光滑,但约书亚的最后评论是现场评论。如果您有定期使用的变量,请在.Rprofile中创建变量,或者使用.Rdata .Rprofile中的某些行添加load('daysofweek.rdata')文件。< / p>

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

一样简单

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

答案 3 :(得分:0)

另一种方法是将 weekdaysISOdate 一起使用:

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"

答案 4 :(得分:-1)

根据今天的日期,我们也可以找到一周的日子

weekdays(as.Date(seq(7),origin=Sys.Date() - as.POSIXlt(Sys.Date())$wday ))
 [1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Saturday" 
 [7] "Sunday"