2

初心者の質問で申し訳ありません: R で毎日の統計をカウントしようとしています。日付ごとに複数の予定があり、「確認済み」、「キャンセル済み」、「キャンセル遅延」の 3 つの異なるステータスがあります。

正しいカウントを行うように見えるものを試しましtable(data)たが、すべての日付が順不同になります。それを修正する方法はありますか、または日付の順序を失うことなくカウントを行うにはどうすればよいですか?

> データ[25:35,]

        日付ステータス
25 2012.9.8 確定
26 2012.9.8 確定
27 2012.9.8 中止
28 2012.9.8 確定
29 2012.9.9 確定
30 2012.9.9 確定
31 2012.9.9 中止
32 2012.9.9 確定
33 2012年9月9日 レイトキャンセル
34 2012.9.9 確定
35 2012.9.10 確定

これは、3 か月にわたる約 1000 件の予定の簡略化されたバージョンです (部屋番号、顧客の種類などもフル セットに含まれています)。この単純な例を使用して、R でデータをカウントおよびソートする方法を理解したいと考えています。

を使用して一意の日付の新しいベクトルを作成した場合、unique(data$Date)それをビンとして使用してステータス カウントを並べ替えることができますか?

4

1 に答える 1

2

私はこれを行うためにパッケージから使用countします。plyrデータをロードしましょう:

dat = read.table(text = "        Date             Status
 9/8/2012          Confirmed
 9/8/2012          Confirmed
 9/8/2012          Cancelled
 9/8/2012          Confirmed
 9/9/2012          Confirmed
 9/9/2012          Confirmed
 9/9/2012          Cancelled
 9/9/2012          Confirmed
 9/9/2012  LateCancellation
 9/9/2012          Confirmed
 9/10/2012          Confirmed", sep = "", header = TRUE)

まずDate、文字列ではなく、適切な時間認識データ型に変換する必要があります。

dat[["Date"]] = strptime(dat[["Date"]], format = "%m/%d/%Y")

カウントを実行します。

require(plyr)
cdat = count(dat, c("Date", "Status"))
> cdat
        Date           Status freq
1 2012-09-08        Cancelled    1
2 2012-09-08        Confirmed    3
3 2012-09-09        Cancelled    1
4 2012-09-09        Confirmed    4
5 2012-09-09 LateCancellation    1
6 2012-09-10        Confirmed    1

日付が正しい順序になっていることに注意してください。これは、を使用した変換によるものstrptimeです。のように見える出力が必要な場合は、パッケージからtableいくつかの調整を実行する必要があります。dcastreshape2

> dcast(cdat, Date ~ Status, value.var = "freq")
        Date Cancelled Confirmed LateCancellation
1 2012-09-08         1         3               NA
2 2012-09-09         1         4                1
3 2012-09-10        NA         1               NA
于 2012-11-16T07:55:45.480 に答える