R tapply时差 - 单位不一致

时间:2018-05-12 23:15:48

标签: r tapply

我已经搜索过,但未能在SO上找到这个问题,如果我忽略了帖子,请道歉。 可重现的代码,这样你至少可以看到我正在使用的内容,但错误无法重现(在我的数据中间歇性地发生):

require(dplyr)
df <-data.frame(id=as.numeric(c("1","1","1","2","2","2","3")), 
            start= c("1/31/17 10:00","1/31/17 10:02","1/31/17 10:45", 
                             "2/10/17 12:00", "2/10/17 12:20","2/11/17 09:40","2/11/17 10:00"),
            selfreport = c(12,20,10,0,10,37.5,NA))
df$time1 <- as.POSIXct(df$start,format = "%m/%d/%y %H:%M")
df$DIFF <- unlist(tapply(df$time1,df$id, function(x) c(NA,diff(x))))

which[(df$selfreport<df$DIFF) na.action= na.pass)]

问题1:上面的输出DIFF列以分钟为单位(这就是我想要的)但在我的数据中,只有某些组的值会更改为小时。为什么会这样?

问题2:我需要查看哪些行的自报告值小于DIFF值,但只保留NA值。我无法确定在没有错误消息的情况下放置na.action的位置。

非常感谢帮助

1 个答案:

答案 0 :(得分:0)

对于问题的第二部分,您可以说df %>% filter(!is.na(DIFF)) %>% filter(selfreport < DIFF)