次のようなデータで構成される非常に大きなデータ フレームがあります。
PENR ANFDAT ENDDAT
1 1110 1990-02-01 1998-10-29
2 1981 1998-02-19 1998-02-20
3 6317 1994-11-01 1999-06-30
4 2039 1998-12-01 1999-04-30
(ここから入手)
df <- structure(list(PENR = c(1110L, 1981L, 6317L, 2039L), ANFDAT = structure(c(7336, 10276, 9070, 10561), class = "Date"), ENDDAT = structure(c(10528, 10277, 10772, 10711), class = "Date")), .Names = c("PENR", "ANFDAT", "ENDDAT"), row.names = c(1L, 2L, 3L, 4L), class = "data.frame")
ANFDAT は特定のステータスの開始を表し、ENDDAT はこのステータスの終了を表します。
このデータを棒グラフとして表示したいと考えています。各バーは日付を表す必要があります。各バーの高さは、この日付にステータスを持つレコード数 (PENR) を表す必要があります。
データ フレームが非常に大きいため、これを達成するための効率的な方法を探しています。
[編集]
私の質問は誤解を招くようです。これが私がやろうとしていることです:
min(df$ANFDAT)からまでの各日付のデータ フレームを生成しますmax(df$ENDDAT)。これは簡単に行うことができますdf1 <- data.frame(DATE = seq(min(df$ANFDAT), max(df$ENDDAT), by = "day"))- の各行について、とを持つ
df1$DATEレコードの数を数えます。結果を保存しますdfANFDAT >= DATEENDDAT <= DATEdf1$RECORDS から棒グラフを生成し
df1ます。これはおそらくそのように行うことができます(テストされていません)df2 <- df1$RECORDS row.names(df2) <- df1$DATE barplot(df2$RECORDS)
私の問題は、#2を行う効率的な方法を見つけることです