2

この質問はこの投稿に関連しており、各IDに同じ列値Rを与えますが、解決策は私にとってはうまくいきません。

インデックスが個人が薬 C10 を取得した最初の日付であるデータ テーブルがあります。*? 2010 年 4 月 1 日から 2010 年 9 月 30 日までの期間:

names   drugs      dates      index
1:  mary C10AA07 2009-10-01         NA
2:  mary C09AA03 2010-06-01         NA
3:  mary C10AA07 2010-07-01 2010-07-01
4:  mary A02BC01 2010-07-01         NA
5:  mary C10AA07 2010-07-24 2010-07-01
6:   tom C10AA05 2009-12-01         NA
7:   tom C10AA05 2010-04-06 2010-04-06
8:   tom C07AB03 2010-05-12         NA
9:   tom C10AA05 2010-08-01 2010-04-06

列「インデックス」のすべての行のインデックス日付をメアリーに与えようとしています。トムも同様です。出力は次のようになります。

 names   drugs      dates      index
1:  mary C10AA07 2009-10-01 2010-07-01
2:  mary C09AA03 2010-06-01 2010-07-01
3:  mary C10AA07 2010-07-01 2010-07-01
4:  mary A02BC01 2010-07-01 2010-07-01
5:  mary C10AA07 2010-07-24 2010-07-01
6:   tom C10AA05 2009-12-01 2010-04-06
7:   tom C10AA05 2010-04-06 2010-04-06
8:   tom C07AB03 2010-05-12 2010-04-06
9:   tom C10AA05 2010-08-01 2010-04-06

これはまさに、上記のリンクにある問題です。これらは私が試したコード行ですが、各コードはインデックスのすべての NA 値をパックするか、dt2 を変更しません。

試行 1:

dt2[, index := index[grepl('^C10.*?', as.character(dt2$drugs))& dt2$dates>="2010-04-01" & dt2$dates<"2010-10-01"][1], by = names]     
dt2

試行 2:

dt2[, index := index[grepl('^C10.*?', as.character(dt2$drugs))[1], by = names])
dt2

何が起こっているのか、なぜコードが機能しないのか理解できません。誰かがこれに光を当てることができれば、それは素晴らしいことです. ありがとうございました。

試行 3:

dt2[, index := index[drugs == 'C10AA05' & drugs=='C10AA07'][1], by = names]
dt2
4

1 に答える 1