Re: [問題] 以時間間隔為條件,抽取資料
※ 引述《anakinyen (我在台北 天氣晴)》之銘言:
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 新手,只會套用package
: [問題敘述]:
: 我有一批動物研究的資料
: 資料大致長這個樣子,共有12隻個體一萬多筆
: 個體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
: 由於時間間隔過短的話,資料之間可能有相關性
: 因此我現在想要設定6小時的閥值,間隔超過6小時的資料才會保留
: 以上面資料為例
: A個體保留第一、第三筆資料
: B個體保留第一、第二、第四筆資料
: 我的程度是新手,偶爾會拿一些package來套用
: 請教是否有相關套件或現成code可以用在這個案例
: 非常感謝~~
借用 celestialgod 大大的函數去生data
我的想法是 新生成一個變數 interval , 當作時間間隔 , 再去篩選 >6 的
library(data.table)
library(dplyr)
#生data 3天
numObs <- 10
numInd <- 3
data1 <- data.table(ind = ( sample(numInd, numObs, TRUE)),
time = strptime("2012/12/10", "%Y/%m/%d") +
sample(86400, numObs, TRUE),
obs = rnorm(numObs))
data2 <- data.table(ind = ( sample(numInd, numObs, TRUE)),
time = strptime("2012/12/11", "%Y/%m/%d") +
sample(86400, numObs, TRUE),
obs = rnorm(numObs))
data3 <- data.table(ind = ( sample(numInd, numObs, TRUE)),
time = strptime("2012/12/12", "%Y/%m/%d") +
sample(86400, numObs, TRUE),
obs = rnorm(numObs))
#合併 & 排序
data = rbind(data1,data2,data3) %>% arrange(ind,time)
#計算時間差
data$interval = c( 0 ,
difftime(data$time[ 2:length(data$time) ] ,
data$time[ 1:( length(data$time)-1 ) ] , units="hours" )
)
#篩選時間差 >6 的
x = data %>% filter( . , interval>6 )
#------------------------------------------------------
我並沒有處理 ind: 1跳到2時 必須重新計算時間間隔
由於我按照 ind & time 排序
2的第一個interval會是負的
並不影響我們篩選 interval>6
#------------------------------------------------------
150萬筆
user system elapsed
0.27 0.07 0.33
150萬筆我是用 min>6 去篩選
因為用hour會抓不到東西
畢竟24小時間隔內 生太多data
會無法出現間隔 >6 hour的情況
#------------------------------------------------
如果有bug歡迎討論
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.66.10.146
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1486399622.A.7DD.html
※ 編輯: f496328mm (42.66.10.146), 02/07/2017 00:57:29
→
02/07 08:14, , 1F
02/07 08:14, 1F
→
02/07 08:15, , 2F
02/07 08:15, 2F
→
02/07 08:15, , 3F
02/07 08:15, 3F
→
02/07 08:15, , 4F
02/07 08:15, 4F
→
02/07 08:15, , 5F
02/07 08:15, 5F
→
02/07 08:44, , 6F
02/07 08:44, 6F
推
02/07 11:23, , 7F
02/07 11:23, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 8 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章