この質問はこの投稿に関連しており、各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