[問題] 對group_by後的資料使用filter過濾
文章分類提示:
- 問題: 當你想要問問題時,請使用這個類別
[問題類型]:
程式諮詢(我想用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 的版本和套件版本資訊,
讓版友更容易找出錯誤
[關鍵字]:
選擇性,也許未來有用
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.171.149
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1479546303.A.C7A.html
→
11/19 19:03, , 1F
11/19 19:03, 1F
→
11/19 19:03, , 2F
11/19 19:03, 2F
QL <- quantile( type, probs=0.25) %>%
QU <- quantile( type, probs=0.75) %>%
我的想法是用 quantile 函數去抓出前面 group_by 出來的每一組數據排序25%跟75%的值
用25%和75%的值當做lowerbound跟upperbound,分別指定給 QL 和 QU
再用 QL 跟 QU 去算IQR,但是不知道為什麼console一直顯示錯誤, QL 跟 QU 算不出來
→
11/19 19:56, , 3F
11/19 19:56, 3F
→
11/19 19:56, , 4F
11/19 19:56, 4F
→
11/19 19:56, , 5F
11/19 19:56, 5F
痾那我這邊應該要怎麼個打法才能跑出我想要的結果呢?..0.0
因為初始化 QL 和 QU 要根據group_by出來的結果
所以我就想說把 QL 跟 QU 的初始化擺在group_by後面
但這樣子程式會出現錯誤:
>Error in quantile(type, probs = 0.25) : object 'type' not found
所以我就在QL和QU後面通通加上 %>% ,但這樣一搞就變成後面出錯了
現在處於一個不知道哪裡出問題的狀態,煩請大神指點迷津,感謝
PS.一開始我是第一段程式碼先group_by出分類結果
然後想說第二段程式碼是根據第一段的分類結果
所以我就把第二段程式碼安插在第一段的group_by跟summarize中間
我的想法是這樣,但我不知道這樣的邏輯對不對,還請不吝指正,感謝!!!
※ 編輯: joson4921 (1.161.171.149), 11/19/2016 20:11:36
→
11/19 21:09, , 6F
11/19 21:09, 6F
→
11/19 22:04, , 7F
11/19 22:04, 7F
→
11/19 22:04, , 8F
11/19 22:04, 8F
→
11/20 00:14, , 9F
11/20 00:14, 9F
→
11/20 00:15, , 10F
11/20 00:15, 10F
推
11/20 00:18, , 11F
11/20 00:18, 11F
→
11/20 09:30, , 12F
11/20 09:30, 12F
→
11/20 09:31, , 13F
11/20 09:31, 13F
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章