我已经搜索过,但未能在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
的位置。
非常感谢帮助
答案 0 :(得分:0)
对于问题的第二部分,您可以说df %>% filter(!is.na(DIFF)) %>% filter(selfreport < DIFF)
。