【问题标题】:R tapply Time Difference -- Units inconsistentR tapply 时差 - 单位不一致
【发布时间】:2018-05-12 23:15:47
【问题描述】:

我在 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:我需要查看哪些行的 selfreport 值小于 DIFF 值,但不考虑 NA 值。如果没有错误消息,我无法弄清楚将na.action 放在哪里。

非常感谢您的帮助

【问题讨论】:

  • 亲爱的香蕉;最好引用您在搜索过程中发现的内容,而不是请求宽恕。最好不要以表达有条件欣赏的尾声结束。网站开发人员将其视为“噪音”。在这方面,我们都严格遵守他们无所不知的指导。
  • 关于问题的实质而不是形式:午夜日期时间的打印表示通常“看起来”只是日期。我无法判断这是否适用于您的问题,因为您的示例确实“举例说明”了这个问题。
  • @42-,如实指出。我还能提供什么有助于交流我的问题吗?我知道我的例子不能说明问题......

标签: r tapply


【解决方案1】:

对于问题的第二部分,你可以说df %&gt;% filter(!is.na(DIFF)) %&gt;% filter(selfreport &lt; DIFF)

【讨论】:

    猜你喜欢
    • 2018-10-04
    • 2023-04-05
    • 2017-11-06
    • 2016-03-11
    • 2011-08-15
    • 2015-07-29
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多