我需要一个包含一周中几天的向量,但我总是输入:
days.of.week <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
这很简单,因为它很短,但总是存在拼写错误的可能性。有没有办法以编程方式创建包含一周中几天的向量?
答案 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)
另一种方法是将 weekdays
与 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"
答案 4 :(得分:-1)
根据今天的日期,我们也可以找到一周的日子
weekdays(as.Date(seq(7),origin=Sys.Date() - as.POSIXlt(Sys.Date())$wday ))
[1] "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"
[7] "Sunday"