[問題] 依變項分組的加總

看板R_Language作者時間3年前 (2021/12/03 18:24), 3年前編輯推噓8(809)
留言17則, 4人參與, 3年前最新討論串1/2 (看更多)
更新 如 c大及f大所述 我確實第一次就做對了xD 假設一資料集為: Date dr TimeofPeriod permodel108 Cum X1 12/1 1 1 10 10 X 2 12/1 1 1 20 30 X 3 12/1 1 2 10 10 X 4 12/2 1 1 30 30 X 5 12/2 1 1 10 40 X 6 12/2 2 1 20 20 X 7 12/2 2 1 10 30 我一開始的完整語法是: install.packages("tidyverse") #for mutate install.packages("lubridate") #for time format transfrom install.packages("dplyr") #for rank Install.packages (“plyr”) #for rank library(tidyverse) library(lubridate) library(dplyr) library(plyr) NewFile<-mutate (group_by(file, date, doctor, TimeofPeriod), cum = cumsum (pre dmodel108)) View(NewFile) 上列語法因多了一個 library(plyr) 故導致最後的結果如原文所示 (變成逐筆累加,而未依照組別去累加) 我後來重新打開 R 聽f大的建議 不安裝 plyr 其他程式照跑 就可以得到完美的異組累加(上方表格cum欄位、或下方17樓我的回覆照片) 真的謝謝版上各位大大 也非常謝謝f大的回文>_______< ———————以下為原文——————— 各位大大好,不好意思 想請問 我手邊有一組資料 https://i.imgur.com/w453bWR.jpg
因為想依照日期(date)、醫師(doctor )、診間時段(TimeofPeriod)分群,將最右 欄的premodel108個數值累加 但是希望可以是 X1-X7、X8-X15的數值分別累加 我打的程式碼是: file<-mutate(group_by(file,date,doctor,TimeofPeriod),cum=cumsum(predmodel108 )) 做出來的卻是 X1-X15的累加QQ 想請問我的程式碼應如何修正呢 謝謝大家QQQQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.9.114.174 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1638527042.A.383.html ※ 編輯: cheen885 (101.9.114.174 臺灣), 12/03/2021 18:26:59

12/03 18:43, 3年前 , 1F
file <- file %>% group_by(date, doctor,TimeofPeeiod) %>
12/03 18:43, 1F

12/03 18:43, 3年前 , 2F
% summarise(sum=sum(premodel108)
12/03 18:43, 2F

12/03 18:43, 3年前 , 3F
然後既然都用 dplyr 了 就用 pipeline 吧 巢狀的程式碼不好
12/03 18:43, 3F

12/03 18:43, 3年前 , 4F
閱讀
12/03 18:43, 4F
嗚謝謝你!!那麼快速回復我好感動 不過想請問我跑出來長這樣... https://i.imgur.com/5mqEZ02.jpg
應該如何處理呢QQ 謝謝你 ※ 編輯: cheen885 (101.9.114.174 臺灣), 12/03/2021 21:29:11

12/03 21:49, 3年前 , 5F
看錯誤訊息是資料筆數對不起來,剩下沒有可重現錯誤的資料
12/03 21:49, 5F

12/03 21:49, 3年前 , 6F
愛莫能助(聳肩
12/03 21:49, 6F

12/03 23:38, 3年前 , 7F
其實可以考慮用 split 切開 data frame 等用 lapply 處理
12/03 23:38, 7F

12/03 23:38, 3年前 , 8F
完再合起來,對於不熟悉的人來說應該比較直覺
12/03 23:38, 8F

12/04 00:06, 3年前 , 9F
G大 其實我覺得 lapply 也沒有很直觀耶XDDD
12/04 00:06, 9F

12/04 09:19, 3年前 , 10F
因為group_by 分組後的列數跟原本資料對不起來,所以沒辦
12/04 09:19, 10F

12/04 09:19, 3年前 , 11F
法直接給新欄位。可以重給一個df, 再join起來
12/04 09:19, 11F

12/04 15:30, 3年前 , 12F
不然用 for loop 也可以,一開始就學 dplyr 我覺得會有點
12/04 15:30, 12F

12/04 15:30, 3年前 , 13F
卡卡的
12/04 15:30, 13F

12/05 01:09, 3年前 , 14F
我覺得原PO一開始就寫對了 原PO要不要檢查一下資料
12/05 01:09, 14F

12/05 01:09, 3年前 , 15F
12/05 01:09, 15F

12/05 01:09, 3年前 , 16F
12/05 01:09, 16F

12/05 01:09, 3年前 , 17F
不然試試看data.table
12/05 01:09, 17F
咦!!對,我剛剛檢查資料 確實做出來是對的 如下圖部分資料所示 https://i.imgur.com/ZxQSIli.jpg
(藍線為異組分線,分框框為另一組的累積增加值) 不知道為何再發文前檢查過資料 當時腦筋打結,誤以為自己做錯語法了 謝謝板上各位大大的幫忙QQQ 貴版真的好有溫暖>____< ※ 編輯: cheen885 (101.9.238.184 臺灣), 12/06/2021 00:17:36 ※ 編輯: cheen885 (101.9.238.184 臺灣), 12/06/2021 20:41:13 ※ 編輯: cheen885 (101.9.238.184 臺灣), 12/06/2021 20:42:27
文章代碼(AID): #1XgV12E3 (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1XgV12E3 (R_Language)