次のようなデータで構成される非常に大きなデータ フレームがあります。
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
レコードの数を数えます。結果を保存しますdf
ANFDAT >= DATE
ENDDAT <= DATE
df1$RECORDS
から棒グラフを生成し
df1
ます。これはおそらくそのように行うことができます(テストされていません)df2 <- df1$RECORDS row.names(df2) <- df1$DATE barplot(df2$RECORDS)
私の問題は、#2を行う効率的な方法を見つけることです