私は日付のベクトルを持っています:
mydates <- seq(as.Date("2013-01-01"), length=6, by="1 month")
そして、次のようないくつかのデータを含むデータフレーム(ただし、より多くのエントリを含む):
startdate <- as.Date(c("2013-01-01", "2013-02-01", "2013-05-15", "2013-05-22"))
enddate <- as.Date(c("2013-02-21", "2013-03-15", "2013-06-15", "2013-07-22"))
state <- c("NY", "NY", "CA", "CA")
df <- data.frame(startdate=startdate, enddate=enddate, state=state)
ここで、mydates ベクトルの各日付を使用して、各州に存在するエントリの数を確認したいと思います。つまり、これらのステートメントを実行できるようになりたいのです
result <- subset(df, startdate <= mydates[1] & enddate > mydates[1])
table(result$state)
mydates ベクトルの各要素に対して。さまざまな適用機能と foreach パッケージを試しましたが、何も機能しません。提案をありがとう。
更新 以下のアドバイスに従って、私が試した多くのことのいくつかはうまくいきませんでした:
results <- for(i in 1:length(mydates)) {subset(df, startdate <= mydates[i] & enddate > mydates[i])}
foreach(i=mydates) %do% { subset(df, startdate<= i & enddate > i) }
別の関数を作成する
myf <- function (mydate,mydf=df) {
x <- subset(mydf, startdate <= mydate & enddate > mydate)
}
サブセット化して sapply(mydates, myf) を試す
この myresults <- sapply(mydates, myf)
と同じ結果が得られます
all_results <- sapply(1:length(mydates), function(x) subset(df, startdate <= mydates[x] & enddate > mydates[x]))
その下には
[,1] [,2] [,3] [,4] [,5] [,6]
startdate 15706 Numeric,2 15737 Numeric,0 Numeric,0 Numeric,2
enddate 15757 Numeric,2 15779 Numeric,0 Numeric,0 Numeric,2
state factor,1 factor,2 factor,1 factor,0 factor,0 factor,2
これらを誤解している可能性がありますが、州ごとの一致結果の数が表示されていないようです。