0

私は日付のベクトルを持っています:

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

これらを誤解している可能性がありますが、州ごとの一致結果の数が表示されていないようです。

4

2 に答える 2