如何为每个ID创建场合变量(时间)?

时间:2016-04-01 02:57:30

标签: r variables

我想创建变量" Time"这基本上表示变量ID在每天内出现的次数减去1.换句话说,计数滞后1并且第一次出现在一天中的ID应该留空。第二次在给定日期显示的相同ID应为1.

基本上,我想创建" Time"下例中的变量。

ID Day Time Value
1  1        0
1  1    1   0
1  1    2   0
1  2        0
1  2    1   0
1  2    2   0
1  2    3   1
2  1        0
2  1    1   0
2  1    2   0

以下是我正在处理的代码。没有成功。

data$time<-data.frame(data$ID,count=ave(data$ID==data$ID, data$Day, FUN=cumsum))

1 个答案:

答案 0 :(得分:2)

我们可以使用router.post('/register',function(req,res,next){ 执行此操作。将'data.frame'转换为'data.table'(router.post('/register', upload.single('profileimage'), function(req,res,next){ ),按'ID','Day'分组,我们得到for(i=0;i<dim[0];i++) for(j=0;j<dim[1];j++){ if(!image[i][j]) { document.getElementById('top-left').innerHTML = i+' '+j; return; } } 行的序列(data.table)并将(setDT(df1))指定为“时间”栏。

lag

shift(seq_len(.N))

:=

或没有library(data.table) setDT(df1)[, Time := shift(seq_len(.N)), .(ID, Day)] df1 # ID Day Value Time # 1: 1 1 0 NA # 2: 1 1 0 1 # 3: 1 1 0 2 # 4: 1 2 0 NA # 5: 1 2 0 1 # 6: 1 2 0 2 # 7: 1 2 1 3 # 8: 2 1 0 NA # 9: 2 1 0 1 #10: 2 1 0 2

base R

数据

with(df1, ave(Day, Day, ID, FUN= function(x)
        ifelse(seq_along(x)!=1, seq_along(x)-1, NA)))
#[1] NA  1  2 NA  1  2  3 NA  1  2