[问题] 对group_by后的资料使用filter过滤

楼主: joson4921 (特务)   2016-11-19 17:04:57
文章分类提示:
- 问题: 当你想要问问题时,请使用这个类别
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
*[m
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
手上有一组资料叫作OnStop_TT(csv档:https://goo.gl/uneVoZ)
想选取其中的Time_frame(5-22时)/Goback(去&返程)/NameZh(单程25站)等三个字段
以group_by作分类,分类结果为
符合对应Time_frame/Goback/NameZh底下皆有数十笔不等之Time_OnStop(停靠时间)
再以summarise取出停靠时间最小值,然后用arrange依Time_OnStop大小排序输出
以下程式码参考网络上有的并加以修改如下:
===============================================================
#初始化 type 储存分类后的 OnStop_TT 资料
type <- OnStop_TT %>%
#选取Time_frame, Goback, NameZh等三字段作为分类数据的依据
group_by(Time_frame,Goback,NameZh) %>%
summarise(Time_OnStop = min(Time_OnStop)) %>%
arrange(desc(Time_OnStop))
===============================================================
到这边为止都OK也能跑出我要的结果.
但我想做的是在summarise取最小值之前,先行排除停靠时间过小的资料:
→比“盒须法下缘(令此数为 QL )减1.5倍 IQR”还要小的资料视为异常值删除
之后再对每一组分类结果底下的停靠时间资料作处理:
因为不会写所以copy网络上找到的程式码并修改如下:
===============================================================
#初始化盒须法上下缘分别为 QU 和QL, IQR值为QU-QL
QL <- quantile( type, probs=0.25) %>%
QU <- quantile( type, probs=0.75) %>%
QU_QL <- QU-QL %>%
QL %>%
QU %>%
QU_QL %>%
#锁定小于下四分位数的数值( Time_OnStop < QL-1.5*IQR 的资料视为异常值)
which(type < QL-1.5*QU_QL) %>%
type[which(type < QL-1.5*QU_QL)] %>%
#移除小于 下缘QL减去1.5倍IQR 的资料列
#然后取最小值
filter( type, Time_OnStop < (QL-1.5*QU_QL)) %>%
summarise(Time_OnStop = min(Time_OnStop)) %>%
arrange(desc(Time_OnStop))
===============================================================
错误代码,疑似QU没有成功初始化:Error: object 'QU' not found
弄了快一星期还是找不到问题出在哪,请求板上大神协助
感谢大家
[环境叙述]:
请提供 sessionInfo() 的输出结果,
里面含有所有你使用的作业系统、R 的版本和套件版本资讯,
让版友更容易找出错误
[关键字]:
选择性,也许未来有用
作者: celestialgod (天)   2016-11-19 19:03:00
第二段程式码 完全看不懂 a <- b %>% c <- d %>%这到底是什么语法?没有这种与法拉qq%>% 要有接函数... 你下一行又是一行assign...当然会assign 失败这个错误很明显来自你的type这个变量没有被assign
楼主: joson4921 (特务)   2016-11-19 22:04:00
好的,我再去找找看怎么解感谢
作者: cywhale (cywhale)   2016-11-20 00:14:00
你是想写dt1<-type %>% mutate(QL=quantile(Time_OnStop,probs=0.25)) %>% mutate(QU = quantile(Time_OnStop,probs=0.75)) 直接在分群好的资料mutate新变量QL, QU即可
楼主: joson4921 (特务)   2016-11-20 09:30:00
谢谢,用了mutate去跑并修正filter之后有跑出我要的结果了,感谢两位c大大的协助!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com