数据表对列的逻辑操作

时间:2014-01-20 17:53:33

标签: if-statement datatable

我正在尝试使用数据表来操作大型数据集,但遇到了麻烦。考虑以下(大大简化的)数据表,其中包含4行ID和3个代码和日期组合

>my_data
      id code.1 date.1   code.2 date.2   code.3 date.3
1:     4    1 2000-06-26    11 1999-11-09    11 1999-10-26
2:     7   22 1998-07-24    11 1998-07-22    49 1998-07-20
3:     9   47 1998-10-28    49 1999-10-19     4 1998-10-28
4:    12    1 1999-03-21    11 1999-10-22     4 1998-02-07

我想为每个ID计算某个代码(例如代码= 11)在特定时间间隔内出现的次数(例如> 1998-07-01)。

我尝试了不同的东西,在这里寻找答案......最终变得不那么雄心勃勃了,最终尝试了这个(这仍然不起作用:():

n_id <- length(my_data$did)
output <- matrix(0,n_id,1)
for (i in 1:n_id) {
   for (j in 1:3) {
      if (my_data$code.[[i]][j] == 11 & my_data$date.[[i]][j]>as.Date(”1999-01-01”)) {trait[i] <-trait[i]+1}
   }
}
output

我希望输出看起来像这样:

  

输出            [1]       [1,] 2       [2,] 1       [3,] 0       [4,] 1

我希望有人可以在我发疯之前帮助我(同时,我确信必须有一种更有效的方法来做到这一点,而不是像我上面尝试的那样循环数据)

0 个答案:

没有答案