[问题] 资料筛选(日期问题)

楼主: 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