作者joson4921 (特务)
看板R_Language
标题[问题] grep判断栏位是否含特定字串,取该笔资料
时间Fri Dec 16 17:54:51 2016
文章分类提示:
- 问题: 当你想要问问题时,请使用这个类别。
[问题类型]:
程式谘询(我想用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
选择性,也许未来有用
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.136.217
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1481882096.A.944.html
1F:推 andrew43: 可以直接用中括号来选列。 12/16 20:24
大大您好,我把filter原本用的 () 改成了 [],但依然显示以下错误
Error in filter[(grep("屯区艺文中心->\\d*",
BusData_51$UniqueBusID, value = T))] :
object of type 'closure' is not subsettable
请问这个错误代表的意思是什麽? 应该如何改才能解决?
感谢
※ 编辑: joson4921 (1.161.164.166), 12/16/2016 23:45:11
2F:→ clansoda: hi,filter needs boolean vector, try grepl 12/16 23:57
将原本的 grep 改成用 grepl之後产生了以下errer,
或许可能是像andrew43大大说的,filter不吃用 grep 出来的资料
Error in filter[grepl("莒光新城->\\d*|屯区艺文中心->\\d*",
BusData_51$UniqueBusID)] :
object of type 'closure' is not subsettable
以下取自andrew43大大在下一篇回文中提供的写法:
===============================================================
selection <- BusData_51 %>%
.[grep("莒光新城->\\d*|屯区艺文中心->\\d*", .$UniqueBusID), ]
===============================================================
selection是拿来存放 资料来源(即BusData_51) 经过 grep 处理後的结果
我要做的是针对BusData_51中的 UniqueBusID 栏位内容做过滤
只取 UniqueBusID 栏位内含 莒光新城-> 或 屯区艺文中心-> 字串的资料列
以上,非常感谢各位大大协助提供谘询
※ 编辑: joson4921 (1.161.164.166), 12/17/2016 16:13:46