Re: [問題] 資料堆疊

看板R_Language作者 (攸藍)時間10年前 (2015/08/06 22:23), 10年前編輯推噓2(2018)
留言20則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《SFMAndroid (安卓發送)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 最近在處理一筆資料 大概長這樣: : user web code : Shelly yam A1 : Bruce finance A2 : Shelly yam A1 : Kate finance A2 : Bruce yam A1 : Bruce google A3 : 希望能夠用堆疊(應該是堆疊吧)的方法讓資料變成這樣: : user web code1 code2 : Shelly yam A1 A1 : Bruce finance A2 : Bruce yam A1 : Bruce google A3 : Kate finance A2 其實跟#1Lmlfyuv (R_Language)問題一模一樣 程式我就直接搬過來了... library(data.table) # 只用到fread library(dplyr) # 用到group_by, mutate, %>% library(tidyr) # 用到spread (可以用reshape2的dcast代替) DT = fread("user,web,code Shelly,yam,A1 Bruce,finance,A2 Shelly,yam,A1 Kate,finance,A2 Bruce,yam,A1 Bruce,google,A3") DT %>% group_by(user, web) %>% mutate(code_name = paste0("code_", 1:n())) %>% spread(code_name, code, fill = "") # user web code_1 code_2 # 1 Bruce finance A2 # 2 Bruce google A3 # 3 Bruce yam A1 # 4 Kate finance A2 # 5 Shelly yam A1 A1 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.8.105 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1438870998.A.A5B.html

08/07 09:05, , 1F
剛試了一下 他出現Error in eval(expr, envir, enclos
08/07 09:05, 1F

08/07 09:06, , 2F
) : object 'web' not found的訊息@@
08/07 09:06, 2F
直接用我的程式跑的?還是有更換成你的資料

08/07 09:08, , 3F
恩恩
08/07 09:08, 3F

08/07 09:09, , 4F
直接用版大fread那個
08/07 09:09, 4F
晚點測試再給你回覆

08/07 09:11, , 5F
我用web另外給一個vector之後 mutate可以跑
08/07 09:11, 5F

08/07 09:11, , 6F
出來變成原資料多一欄code_name 裡面code_1 code_2
08/07 09:11, 6F
可能是colname問題,多一欄是正常結果

08/07 09:11, , 7F
好的 謝謝~
08/07 09:11, 7F

08/07 09:12, , 8F
但spread那出現 Error in dim(ordered) <- c(attr(row
08/07 09:12, 8F

08/07 09:12, , 9F
_id, "n"), attr(col_id, "n")) : dims[ product 10]
08/07 09:12, 9F

08/07 09:13, , 10F
do not match the length of object [0]
08/07 09:13, 10F
這個可能是code_name的內容

08/07 09:14, , 11F
版大你太神啦!!! 加上colname後就ok了!!!
08/07 09:14, 11F

08/07 09:15, , 12F
五體投地
08/07 09:15, 12F
我只是紙上談兵,剛好猜對XD 我測試之後都沒有問題,可能是dplyr版本問題 我的是0.4.1版本,可能再麻煩用seesionInfo()確認一下版本

08/07 15:43, , 13F
我的是0.4.2
08/07 15:43, 13F

08/07 15:45, , 14F
再請問版大 若今天結果變成Bruce finance A2
08/07 15:45, 14F

08/07 15:45, , 15F
Bruce finance A1
08/07 15:45, 15F

08/07 15:46, , 16F
要如何把相同的web合起來 變成Bruce finance A2 A1呢
08/07 15:46, 16F

08/07 15:46, , 17F
抱歉沒對好@@ A2跟A1分別在path_1和path_2
08/07 15:46, 17F

08/07 15:47, , 18F
打錯...code_1和code_2
08/07 15:47, 18F

08/07 15:50, , 19F
試過dcast.data.table和summarise 但是用不出來ˊ ˋ
08/07 15:50, 19F

08/07 15:53, , 20F
啊試出來了 抱歉抱歉
08/07 15:53, 20F
試出來就好XD ※ 編輯: celestialgod (1.163.8.105), 08/07/2015 16:41:58
文章代碼(AID): #1LmstMfR (R_Language)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 4 篇):
文章代碼(AID): #1LmstMfR (R_Language)