2016-12-30 21 views
1

から開始したときにここではいくつかの例のデータで現在経過イベントの数をカウントする方法:新規イベントは開始時間と終了時間

Begin = c("10-10-2010 12:15:35", "10-10-2010 12:20:52", "10-10-2010 12:23:45", "10-10-2010 12:25:01", "10-10-2010 12:30:29") 

End = c("10-10-2010 12:24:23", "10-10-2010 12:23:30", "10-10-2010 12:45:15", "10-10-2010 12:32:11", "10-10-2010 12:45:05") 

df = data.frame(Begin, End) 

私は現在終了していないイベントの数をカウントする新しいイベントそれを新しい列に記録します。したがって、この特定の例では、最終的な結果は0,1,1,1,2という値の列になります。

これはRでコード化する必要があります。ラグ関数を使ってSASでこれを計算する方法を見つけましたが、さまざまな理由でその方法が気に入らず、Rでうまくいくものが欲しいです。

実際には36,000行あり、これは停電。

誰かが、私が試したことを投稿するように頼まれました。 SASでは、私が言ったようにラグ機能に成功しました。あなたは1トンとその効率的ではないハードコードする必要があるので、その方法はうまくいきませんでした。

私は、begintimeと1から36までの数字でソートしようとしましたが、endtimeと1から36までの数字でソートしてからifthenロジックを試してみましたが、壁に当たってどちらかがうまくいくとは思わない。

私の質問は、コミュニティに再び利用可能になるように編集するように言われました。私が想像できる唯一の理由は、可能な回答が多すぎるためです。まあ、私は何も編集しなかったが、私はこの抜粋を加えた。プログラミングでは、まさに最も簡単な質問ではない「良い」質問に対する多くの回答があります(しかし、特にRの回答が多い)。この質問は、私が多くの人々が時間をかけて尋ねるだろうと知っていることであり、率直に言ってRオンラインでこれを行う方法に関する情報源を見つけることは難しいです。この質問に対する答えは非常に短く、完全に機能しました。 stackoverflowのポイントは素晴らしい質問のレパートリーを達成することですので、基本的に彼らの名前は、その質問の行に沿って人々のGoogleものをプルアップされるので、この質問をコミュニティに利用できないことは残念です。

+4

あなたがこれまでに試してみましたし、我々が助けることができるいくつかの具体的な質問を投稿してください。そうでなければ、これは「私のコードを書いてください」というような、良い応答を得られない質問のようです。 –

+3

あなたのデータを画像として投稿しないでください、[再現可能な例]を与える方法を学んでください(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610 ) – Jaap

+0

私は試したことを言って、アリとうまくいった、ありがとう。申し訳ありませんが、私のコードを私の質問に書いてください。他の人がそれに悪意を持って応答しないことを願っています。私は、他の多くのものよりも明らかに日時の操作が難しいと考えていると考えて、このコミュニティについて何か言いたいと思います。私は他の人があなたに質問する前にあなた自身を正当化しなければならないと思っていないことを願っています。 – TravisLong

答えて

0

たぶんこのことができます:

library(lubridate) 
library(data.table) 
df <- as.data.frame(lapply(df, dmy_hms)) 
dt <- as.data.table(df) 
setkey(dt,Begin,End)[,id:=.I] 
merge(dt, foverlaps(dt,dt)[id>i.id,.N,by="Begin,End"], all.x=T)[,id:=NULL][is.na(N),N:=0][] 
# Begin     End N 
# 1: 2010-10-10 12:15:35 2010-10-10 12:24:23 0 
# 2: 2010-10-10 12:20:52 2010-10-10 12:23:30 1 
# 3: 2010-10-10 12:23:45 2010-10-10 12:45:15 1 
# 4: 2010-10-10 12:25:01 2010-10-10 12:32:11 1 
# 5: 2010-10-10 12:30:29 2010-10-10 12:45:05 2 
+0

ありがとう!私は昼食後にこれをチェックします。有望に見える:)私はそれを感謝します。 – TravisLong

関連する問題