1
私はいくつかの時間から私が頭痛を与える時間間隔で働く問題を解決しようとしています。複数の行にわたる時間間隔
これは2つのIDの薬物処方の例です。
df <- data.frame('ID' = c('1','1','1','1','2','2'), 'start' = c('2010-01-01', '2010-01-03', '2010-01-05', '2010-01-09','2010-02-01', '2010-02-10'),
'end' = c('2010-01-03', '2010-01-22', '2010-01-07', '2010-01-12', '2010-02-10', '2010-02-12'))
ID start end
1 1 2010-01-01 2010-01-03
2 1 2010-01-03 2010-01-22
3 1 2010-01-05 2010-01-07
4 1 2010-01-09 2010-01-12
5 2 2010-02-01 2010-02-10
6 2 2010-02-10 2010-02-12
目的は、継続的な薬物使用を示す新しい列を作成することです。したがって、この例では、両方のIDが継続的に使用されます(処方の終了と次の処方の開始の間の最大間隔= 1日)。最終的な結果は次のようになります(連続使用を示すために論理的):
ID start end continuous
1 1 2010-01-01 2010-01-03 FALSE
2 1 2010-01-03 2010-01-22 TRUE
3 1 2010-01-05 2010-01-07 TRUE
4 1 2010-01-09 2010-01-12 TRUE
5 2 2010-02-01 2010-02-10 FALSE
6 2 2010-02-10 2010-02-12 TRUE
それがために連続していないとして、私はdplyrとlubridateでこれを解決しようとしたが、4行目のために正しい結果を得るために管理していませんでした行3の行2行です。ここに私のコードです:
私は本当にこれにいくつかの助けに感謝します!どうも!
私は混乱し、私の答えを削除しました。このデータフレームでソリューションを実行してみてください。 'df1 < - rbind(data.frame(ID = 1、start = as.POSIXct(c( '2010-02-03'、 '2010-02-05')、format = '%Y-%m-%d')、end = as.POSIXct(c( '2010-02-04'、 '2010-02-06')、format = '%Y-%m-%d') 、stringsAsFactors = F)、df [df $ ID == 2]] 'は期待された結果ですか? – Sotos
すばらしい!ありがとうフロリアン! – ceefel
@Sotos、あなたは正しいです、頭のおかげで。私は1日のギャップを含めることを忘れて、私は私の答えを更新します。 – Florian