1

私はヘルスケア業界で働き、機械学習アルゴリズムを使用して、患者がいつアポイントメントに出席しないかを予測するモデルを開発しています。私は各患者の最新の連続ノーショーの合計となる新しい機能を作り出そうとしています。私はstackoverflowや他のリソースをたくさん見回しましたが、探しているものを正確に見つけることはできません。たとえば、患者が直近の2つの予定を表示していない場合、IDを持つ新機能の列のすべての行に2が入力されます。彼女が3回も出席しなかったが、彼女の最近の予定を提示した場合、新しい列は0で埋められます。IDカラムに基づいて最初のシリーズを連続して新しい列を作成

私は、cumsumでplyrのddplyを使用しようとしましたが、私が探している結果が得られませんでした。私が使用:

ID Noshow ConsecutiveNoshows 
1  1     2 
1  1     2 
1  0     2 
1  0     2 
1  1     2 
2  0     0 
2  1     0 
2  1     0 
3  1     1 
3  0     1 
3  1     1 
3  1     1 
3  1     1 

I'LL:これは私の望ましい結果である

ID Noshow 
1  1 
1  1 
1  0 
1  0 
1  1 
2  0 
2  1 
2  1 
3  1 
3  0 
3  1 
3  1 
3  1 

:ここ

ddply(a, .(ID), transform, ConsecutiveNoshows = cumsum(Noshow)) 

は、例えば、データセット( '1' は、ショーを意味しない)でありますどんな助けでも非常に感謝してください。ありがとうございました。

答えて

0

0が表示される前に、のそれぞれについて、の数字がNoshowと表示されます。与え

library(dplyr) 
df %>% 
    group_by(ID) %>% 
    mutate(ConsecutiveNoshows = sum(!cumsum(Noshow == 0) >= 1)) 

#Source: local data frame [13 x 3] 
#Groups: ID [3] 
# 
#  ID Noshow ConsecutiveNoshows 
# <int> <int>    <int> 
#1  1  1     2 
#2  1  1     2 
#3  1  0     2 
#4  1  0     2 
#5  1  1     2 
#6  2  0     0 
#7  2  1     0 
#8  2  1     0 
#9  3  1     1 
#10  3  0     1 
#11  3  1     1 
#12  3  1     1 
#13  3  1     1 
+1

スティーブンを、私は非常に大きなデータセットへのソリューションを適用し、意図したとおり、それは正確に働きました。解決策を見つけるのに使った思考プロセスを教えてくれてありがとう。 –

+0

@JamesMarquez喜んでそれは助け:) –

関連する問題