Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 删除有间隙的数据_R_Time_Gaps In Data - Fatal编程技术网

R 删除有间隙的数据

R 删除有间隙的数据,r,time,gaps-in-data,R,Time,Gaps In Data,我想删除与单个id对应的最大和最小时间段之间存在间隙的数据。每个id可以在任何时间段开始和结束,这很好。我只想抓取在最大和最小时间内没有丢失时间的ID library(data.table) set.seed(5) data<-data.table(y=rnorm(100)) data[sample(1:100, 40),]<-NA id = rep(1:10, each = 10) time = seq(1,10) data2<-data.frame(id,time) dat

我想删除与单个id对应的最大和最小时间段之间存在间隙的数据。每个id可以在任何时间段开始和结束,这很好。我只想抓取在最大和最小时间内没有丢失时间的ID

library(data.table)
set.seed(5)
data<-data.table(y=rnorm(100))
data[sample(1:100, 40),]<-NA
id = rep(1:10, each = 10)
time = seq(1,10)
data2<-data.frame(id,time)
data2$row<-1:nrow(data2)
data2a<-subset(data2,row<55|row>61 )
data3<-data2a[-sample(nrow(data2a), 5),]
data.table(data3)
count(data3$id)
库(data.table)
种子(5)

数据使用
dplyr

library(dplyr)
data3 %>% group_by(id) %>%
          filter(identical(time, seq(first(time), last(time))))

要筛选的条件是没有大于1的间隙
diff(time)
提供间隙,因此
all(diff(time)==1)
检查条件

因此,您可以通过以下方式执行此操作:

library(dplyr)
data3 %>%
    group_by(id) %>%
    filter(all(diff(time) == 1))
在data.table中,一个解决方案(做同样的事情)是:


作为将来的参考,永远没有理由因为问题已被回答而删除它或它的标题(这将阻止它对未来的搜索者有用)。
setDT(data3)[, .SD[all(diff(time) == 1)], id]