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