Re: [问题] grep判断字段是否含特定字串,取该笔资料

楼主: andrew43 (讨厌有好心推文后删文者)   2016-12-16 23:50:04
我举一个很简单的例子
library(dplyr)
data(CO2)
CO2 %>% .[grep("^Qn[12]$", .$Plant), ]
你希望用 filter() 来做,但它不适合吃 grep() 回传资料。
※ 引述《joson4921 (特务)》之铭言:
:
: 文章分类提示:
: - 问题: 当你想要问问题时,请使用这个类别。
:
: [问题类型]:
:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
:
: [软件熟悉度]:
: 请把以下不需要的部份删除
: 新手(没写过程式,R 是我的第一次)
:
: [问题叙述]:
: 请简略描述你所要做的事情,或是这个程式的目的
: Data含有资料如下所示:
: Time UniqueBusID
: 1 12:00:30 273-FC_o 大东纺织(振兴路)->屯区艺文中心162
: 2 14:45:54 273-FC_o 大东纺织(振兴路)->屯区艺文中心162
: 3 15:53:47 273-FC_o 屯区艺文中心->莒光新城163
: 4 17:17:56 285-FC_o 下太平->莒光新城164
: 5 15:46:12 285-FC_o 莒光新城->莒光新城163
: 我想做的是将UniqueBusID内含有"屯区艺文中心->","莒光新城->"两字串的资料列取出
: 具体做法是先使用检测用的函数检测UniqueBusID是否含有该二字串,
: 爬文之后选用grep来做检测,检测之后再用filter将通过grep检测的资料列留下
: 但我发现使用filter()不能直接在括号内放进grep那一串,改用mutate也一样不行
: 请问板上大大这中间是不是我想错了什么导致我无法取出我要的结果呢?
: PS.结果应仅剩下第3和第5资料列
: 先感谢板大拨冗解惑
: [程式范例]:
:
: filter(grep("莒光新城->\\d*|屯区艺文中心->\\d*",
: BusData_51$UniqueBusID, value = T))
: filter)
: [环境叙述]:
:
: [关键字]:
: grep, filter, mutate
:
: 选择性,也许未来有用
:
作者: celestialgod (天)   2016-12-17 00:02:00
grepl + filter
作者: joson4921 (特务)   2016-12-17 00:12:00
c大那一系列文看了很多遍,但是有些眉角还是不太晓得怎么用,andrew大刚刚的写法我针对自己的需求做了修改,终于跑出我要的结果了,来去原篇把更正的结果发上来,谢谢R板的大大们热心协助
楼主: andrew43 (讨厌有好心推文后删文者)   2016-12-17 00:37:00
如C板主说的,如果要用filter,用CO2 %>% filter(., grepl("^Qn[12]$", .$Plant)) 即可重点是 filter() 要喂食TRUE/FALSE
作者: joson4921 (特务)   2016-12-17 16:12:00
原来是这样...刚刚分别试过两种方法,再好好琢磨琢磨

Links booklink

Contact Us: admin [ a t ] ucptt.com