私は2つの日付の列を持っています。二つの例の日付は、次のとおりです。Rループを避ける方法。データフレーム内の各行に対して2つの日付間の週末を1行に数える
Date1= "2015-07-17"
Date2="2015-07-25"
私は自分の列(この例のコードでは5 & 7)であり、それぞれが2つの日付の間の土日の数をカウントしようとしています。私は自分のデータフレームの各行に対してこのプロセスを繰り返す必要があります。最終結果は、2つの日付列で定義された日付範囲内の土曜日と日曜日の数を表す1つの列になります。
私は1つの行のために働くためのコードを取得することができます:
sum(weekdays(seq(Date1[1,5],Date2[1,7],"days")) %in% c("Saturday",'Sunday')*1))
これに対する答えは3になります。しかし、私は日付1と日付2の行位置に「1」を取る場合、私が得ますこのエラー:
Error in seq.Date(Date1[, 5], Date2[, 7], "days") :
'from' must be of length 1
がどのように私は行ずつ移動して、ループを使用せずに、列5および7の2つの日付の間の土日の数をリスト1のベクトルを持っているのですか?もう1つの問題は、200万行があり、ループよりも少し速いものを探していることです。
ありがとうございました!
ループが、 'sapply(seq_len(nrow(日付1))、関数(I)の和(平日(配列(日付1 [I]、[5]、日付2の[次のようにDate1とDate2がdata.framesの場合は、%c( "土曜日"、 "日曜日)* 1)))'が有効になります。 – lmo
これは役に立ちます。私は200万行を持っていると付け加えて、それをスピードアップする方法があるかどうか疑問に思っていました!しかし、あなたのコードはうまくいった! – Tracy
[再現可能な例]を提供してください(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – Heroka