5

日付のデータ フレーム (Date オブジェクト) があります。下を参照してください。それらを曜日に変換してからヒストグラムを描画しようとしていますが、理想的にはラベルが「月曜日」...「日曜日」(数値ではありません)

2 つの異なる問題があります。

  1. Date オブジェクトを day-of-week に変換するのは簡単ですが、結果は文字列または数値であり、オブジェクトではありません。
  2. ヒストグラムを取得すると、ビンとラベルが間違っています (以下を参照)。

を使用するweekdays(dat)と、出力は では使用できない文字列 ("Monday"...) になります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'))

ラベル付けの意図どおりに機能しません。0.5 幅のビンはどうなっていますか? また、Sunday->0 と Monday->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
4

3 に答える 3

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)]))

ここに画像の説明を入力

于 2011-08-03T12:38:58.760 に答える
4

ヒストグラムbarplotではなく、table日数のカウントに使用できます。

barplot(table(weekdays(dat)))

デフォルトでは、日はアルファベット順にソートされることに注意してください。したがって、より自然に並べ替えるには、因子呼び出しでレベルを並べ替える必要があります。

barplot(table(factor(weekdays(dat),levels=c("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"))))
于 2011-08-03T10:15:28.193 に答える
3

を因子 (カテゴリ変数のデータ型) に変換weekdays(dat)し、ヒストグラムのクラスを解除します (整数に変換されます)。カスタム x 軸の作成を容易にする因子クラスの操作があります。

## days of the week
days <- c('Sun','Mon','Tues','Wed','Thurs','Fri','Sat')

## sample with replacement to generate data for this example
samples <- sample(days,100,replace=TRUE)

## convert to factor
## specify levels to specify the order
samples <- factor(samples,levels=days)

hist(unclass(samples),xaxt="n")
axis(1,at=1:nlevels(samples),lab=levels(samples))
box()
于 2011-08-03T07:58:44.003 に答える