[問題] 資料篩選(日期問題)

作者: tony1331 (BLUE)   2017-09-21 15:39:13
[問題類型]:
(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
(沒寫過程式,R 是我的第一次)s
[問題敘述]:
http://i.imgur.com/woqwvM1.jpg
Table有一欄是時間,假設是7-8月的資料,
請問如果我只想要1點到2點的資料該如何寫
(不管日期 只要1點到2點)
謝謝~
作者: clansoda (小笨)   2017-09-22 20:30:00
regex我還是常常要在那邊試來試去的 沒辦法一次到位
作者: tony1331 (BLUE)   2017-09-22 20:27:00
好的,我馬上來google,感謝你!!
作者: celestialgod (天)   2017-09-22 20:25:00
請google regular expression,其實只是這個的應用而已
作者: celestialgod (天)   2017-09-22 20:46:00
其實適用場域非常多,只是你要不要用而已,工作上,幾乎每次程式都會用到,包刮oracle sql也會用
作者: celestialgod (天)   2017-09-22 08:39:00
直接regular expression取00:xx:xx或是01:xx:xx的格式就好了,沒幾行dat[grepl('0[01]:\\d{2}:\\d{2}',dat$time),]
作者: clansoda (小笨)   2017-09-22 19:03:00
重點是他人不見了吧,只要把字串轉完剩下的都差不多
作者: celestialgod (天)   2017-09-22 18:44:00
本身就是字串還是回歸字串處理吧XDD,感覺原po也不熟轉型
作者: obarisk (OSWALT)   2017-09-22 12:35:00
package lubridatehttps://cran.r-project.org/web/packages/lubridate/vignettes/lubridate.htmldat %>% mutate(hr=hour(ymd_hms(datecol))) %>% filter(hr==1)
作者: clansoda (小笨)   2017-09-22 19:23:00
你只要格式正確的話上面幾個作法應該都可行loop最好作為最後的牌,沒牌再打
作者: tony1331 (BLUE)   2017-09-22 19:18:00
不好意思哦,有點忙,我是已經轉成時間了,我再試看看,謝謝大家。
作者: tony1331 (BLUE)   2017-09-22 20:21:00
cel大,我跑你的code,他是篩出00:00:00~02:00:00,有詳細的說明嗎,謝謝~cl大,不好意思,我是不會用,謝謝你!
作者: clansoda (小笨)   2017-09-22 20:19:00
你的data是不是data.frame?我提的方法是基築於data.table package如果你不想用或不會用data.table可以參考cele大的或oba大的方法 cele大的方法不用額外的library
作者: tony1331 (BLUE)   2017-09-22 20:03:00
c大,跑出來還是有問題http://i.imgur.com/iUppeip.jpg
作者: clansoda (小笨)   2017-09-22 20:43:00
真的不常用,每次要用都要查
作者: celestialgod (天)   2017-09-22 20:41:00
應該是不夠熟XDD利用regexOne把題目都做完看看其實多數會用到的regexp豆不難....
作者: cd12631 (<(◥█◤△◥█◤)>)   2017-09-21 16:18:00
把日期和時間切開各一欄 然後篩選時間
作者: s3714443 (metalheads)   2017-09-21 18:31:00
用lubridate看看?
作者: clansoda (小笨)   2017-09-21 20:33:00
用data.table最快dt[between(hour(time), 0, 3, incbounds = FALSE)]我直接寫在PTT上的,有錯的話應該是括號逗號之類的錯了喔 上面那個3要改成2
作者: tony1331 (BLUE)   2017-09-21 23:02:00
c大我跑出來結果這樣http://i.imgur.com/DwkkS4a.jpg
作者: clansoda (小笨)   2017-09-21 23:26:00
你有日期的type嗎? 我其實不太熟R的datetype你的是字串?因為hour要POXITlt才能跑,他轉不過去我不知道你的datatype 你可能要class看看
作者: tan800630 (天ㄦ)   2017-09-21 23:35:00
看字串形式的話 直接as.POSIXct(x) 試試?

Links booklink

Contact Us: admin [ a t ] ucptt.com