1

169 日間の高頻度の 5 分間の定期観測をカバーする xts オブジェクトがありますが、一部の日に観測が欠落しています。つまり、288 データ ポイント未満です。これらを削除して、データ ポイントが完全な日だけを表示するにはどうすればよいですか?

データで日を見つける

ddx = endpoints(dxts, on="days");
days = format(index(dxts)[ddx], "%Y-%m-%d");


for (day in days) {
  x = dxts[day];
  cat('', day, "has", length(x), "records...\n");
}

私は試した

RTAQ::exchangeHoursOnly(dxts, daybegin = "00:00:00", dayend = "23:55:00") 

しかし、これでも完全なセットが返されました

ありがとう

4

1 に答える 1

2

日ごとに分割します。毎日の行数を数え、288 行を超える行のみを保持します。

dxts <- .xts(rnorm(1000), 1:1000*5*60)
daylist <- lapply(split(dxts, "days"), function(x) {
    if(NROW(x) >= 288) x
})
do.call(rbind, daylist)

上記dxtsは「日」で区切られています。次に、行数が 288 より大きい場合はその日のすべてのデータを返し、それ以外の場合は を返しますNULL。ということで、一覧にdaylistなります。xtsオブジェクトまたはのいずれかの要素がありますNULLdo.call部品はリスト上で呼び出されrbindます。s は集計されないため、288 行未満の日を省略した単一の xts オブジェクトが残りrbind(daylist[[1]], daylist[[2]], ..., daylist[[n]]) ます。NULL

于 2012-06-15T14:17:53.373 に答える