这个问题与这篇文章有关,给每个 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