2017-09-12 34 views
-1

我有以下数据。我想做不同项目之间的计算,当ID是相同的R

id type 
1 15 
1 16 
2 10 
3 10 
3 11 
3 13 
3 14 
4 9 
5 8 
5 20 
5 21 
5 22 

使用上述数据,我们希望计算“id”相等时的“间隔”。通过 'ID' 和

id type interval 
1 15 - 
1 16 1 
2 10 - 
3 10 - 
3 11 1 
3 13 2 
3 14 1 
4 9  - 
5 8  - 
5 20 12 
5 21 1 
5 22 1 

回答

2

我们组采取diff创建 '区间' 列

library(data.table) 
setDT(df1)[, interval := c(0, diff(type)), by = id] 

或用dplyr

library(dplyr) 
df1 %>% 
    group_by(id) %>% 
    mutate(interval = c(0, diff(type)) 

或者与avebase R

df1$interval <- with(df1, ave(type, id, FUN = function(x) c(0, diff(x)))) 
+1

谢谢你~~~我真的很有帮助! –

相关问题