Re: [问题] 以时间间隔为条件,抽取资料

楼主: beatnik (碧妮可)   2019-09-27 06:11:31
感谢原原po的发问以及c大的解答
正好也遇到类似的状况
但照着做之后,
# 计算时间差,以小时表示
DT[ , diffTime := difftime(time, time[min(k, .N)], units="hours"), by = ind]
这一段都会跳出error......
Error in `[.data.frame`(DT, , `:=`(diffTime, difftime(time, time[min(k, :
unused argument (by = ind)
我是将自身资料撷取出来, 字段名全都改成跟c大的资料一样
用c大产生的资料下去跑没问题
但内容换成我的资料就会错误
我的资料格式如下:
ind是"character", time是"POSIXct" "POSIXt",
照理应该是符合规则, 不知卡在哪?
然后我要保留的条件与原文也有所不同
以原文为例:
个体A 2012/10/11 20:00 实验资料OOXX
个体A 2012/10/11 23:00 实验资料OOXX
个体A 2012/10/12 03:00 实验资料OOXX
个体B 2012/12/11 05:00 实验资料OOXX
个体B 2012/12/11 11:05 实验资料OOXX
个体B 2012/12/11 13:00 实验资料OOXX
个体B 2012/12/11 18:00 实验资料OOXX
个体B 2012/12/11 20:00 实验资料OOXX
A个体保留第一、第三笔资料
B个体保留第一、第二、第四笔资料
我则是要保留相近时间内(与上一笔撷取的时间不超过6小时)的最后一笔
其结果会是: A个体保留第3笔, B个体保留第1、5笔
对于B个体而言
05:00
|
作者: celestialgod (天)   2019-09-27 10:10:00
因为你用的是data.frame 不是data.table另外 我有点看不懂你说的意思 不超过六小时的最后一笔 A的话 不是第二笔跟第三笔吗?
作者: TreeMan (好啊...)   2019-09-27 15:52:00
http://www.ideone.com/ZHFeAW 用dplyr的作法, 参考看看
作者: celestialgod (天)   2019-09-27 19:05:00
楼上你只考虑了跟前一笔....
作者: andrew43 (讨厌有好心推文后删文者)   2019-09-28 02:18:00
我想到针对时间做 hclust + cutree 来针对时间分群。https://ideone.com/CD6sc6另外,发问者你说6小时应该说错了,可以大E修文一下。嗯,我解错了。后来补充说明中说了只要和前一笔比就行了若如此,我的解中 "complete" 改成 "single"
楼主: beatnik (碧妮可)   2019-09-29 06:53:00
感谢以上大大, 我会再来好好试着解看看

Links booklink

Contact Us: admin [ a t ] ucptt.com