[問題] 進行特定欄位加總

看板R_Language作者 (天使的圓舞曲)時間7年前 (2017/06/28 11:57), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/2 (看更多)
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 想要進行特定欄位(特定變數)的加總,但不知道怎麼處理 [程式範例]: 資料: id A1 B1 B2 A2 C1 C2 C3 1 1 2 0 4 5 6 7 2 5 6 8 8 1 3 2 請問如果我希望 A1+A2形成一個新的變數,變成新的一欄叫作A, B1+B2形成一個新的變數,變成新的一欄叫作B, C1+C2+C3形成一個新的變數,變成新的一欄叫作C, 想要得到: id A B C 1 5 2 18 2 13 14 6 我試著用aggregate、colSums去做但沒有成功, 請問用有人可以出手指導嗎? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.127.237.54 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1498622259.A.BD3.html

06/28 12:09, , 1F
data.table::melt(DT,measure=patterns("^A","^B","^C"))
06/28 12:09, 1F

06/28 15:28, , 2F
df %>% dplyr::mutate(A=A1+A2,B=B1+B2,C=C1+C2+C3) %>%
06/28 15:28, 2F

06/28 15:28, , 3F
dplyr::select(A, B, C)
06/28 15:28, 3F

06/28 15:39, , 4F
我漏了id,第二行改成dplyr::select(id, A, B, C)
06/28 15:39, 4F

06/29 00:13, , 5F
如果ABC欄位很多,A<-df %>% select(starts_with("A") %>%
06/29 00:13, 5F

06/29 00:14, , 6F
apply(sum, MARGIN = 1),然後分別製作B,C
06/29 00:14, 6F

06/29 00:17, , 7F
最後合併 df_final <- cbind(id = df$id, A, B, C)
06/29 00:17, 7F

07/02 00:46, , 8F
樓上第一種作法的第一步也可以把mutate改成transmute
07/02 00:46, 8F

07/02 00:51, , 9F
就會直接只留下新產生的A, B, C了 阿但是這樣會沒有id
07/02 00:51, 9F
文章代碼(AID): #1PKoaplJ (R_Language)
文章代碼(AID): #1PKoaplJ (R_Language)