如何在星期几进行直方图,并有字符串标签

smc*_*mci 5 r histogram dayofweek

我有一个日期数据框(Date对象); 见底.我试图将它们转换为星期几,然后绘制直方图,但理想情况下标签是'星期一'...'星期日'(不是数字)

我有两个不同的问题:

  1. 将Date对象转换为星期几很容易,但结果是字符串或数字,而不是对象.
  2. 当我得到直方图时,箱子和标签是错误的(见下文).

如果我使用weekdays(dat),输出是字符串("星期一"...),不能使用hist().

或者,如果我转换为数字数据,如何获取字符串标签hist()

> dotw <- with( month.day.year(dat[,1]), day.of.week(month,day,year) )
> hist(xxx,labels=c('M','Tu','W','Th','F','Sa','Su'),col='black') # WTF?!
> hist(dotw,xlab=list('M','Tu','W','Th','F','Sa','Su'))
Run Code Online (Sandbox Code Playgroud)

不适用于标签.什么是0.5宽度的箱子?而且,如何防止周日 - > 0和周一 - > 1之间缺乏差距?理想情况下,列之间没有间隙.

我的数据如下:

> dat
  [1] "2010-04-02" "2010-04-06" "2010-04-09" "2010-04-10" "2010-04-14" "2010-04-15" "2010-04-19"
  [8] "2010-04-21" "2010-04-22" "2010-04-23" "2010-04-26" "2010-04-28" "2010-04-29" "2010-04-30"
 ...

> str(dat)
 Date[1:146], format: "2010-04-02" "2010-04-06" "2010-04-09" "2010-04-10" "2010-04-14" "2010-04-15" ...

> str(weekdays(dat))
 chr [1:146] "Friday" "Tuesday" "Friday" "Saturday" "Wednesday" "Thursday" "Monday" ...
> hist(weekdays(dat))
Error in hist.default(weekdays(dat)) : 'x' must be numeric
Run Code Online (Sandbox Code Playgroud)

42-*_*42- 7

dat <- as.Date( c("2010-04-02", "2010-04-06", "2010-04-09", "2010-04-10", "2010-04-14", 
       "2010-04-15", "2010-04-19",   "2010-04-21", "2010-04-22", "2010-04-23","2010-04-24", 
        "2010-04-25", "2010-04-26", "2010-04-28", "2010-04-29", "2010-04-30"))
 dwka <- format(dat , "%a")
 dwka
# [1] "Fri" "Tue" "Fri" "Sat" "Wed" "Thu" "Mon"
#  [8] "Wed" "Thu" "Fri" "Sat" "Sun" "Mon" "Wed"
# [15] "Thu" "Fri"
dwkn <- as.numeric( format(dat , "%w") ) # numeric version
hist( dwkn , breaks= -.5+0:7, labels= unique(dwka[order(dwkn)]))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述