Re: [問題] 處理資料問題(pkg:dplyr)

看板R_Language作者 (零度空間)時間10年前 (2015/08/06 13:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
延伸問題 正被搞暈中 RAW DATA長這樣 ID 地點 日期 性別 A TAI 2012 F A JP 2013 F A CH 2014 F A KOE 2011 F B JP 2011 M B GOK 2015 M B TA 2012 M 變成下面這樣 第一種 形式 ID 地點一 地點二 地點三 地點四 性別 A KOE TAI JP CH F B JP TA GOK M 第二種 ID 2011 2012 2013 2014 2015 性別 A KOE TAI JP CH F B JP TA GOK M 第三種 ID 地點 性別 A KO,TAI,JP,CH F B JP,TA,GOK M ※ 引述《celestialgod (攸藍)》之銘言: : ※ 引述《gbd37 (有夠瞎)》之銘言: : : 軟體熟悉度: : : 入門 : : [問題敘述]: : : x是原data的型態 : : y是想用dplyr的套件去轉換成 : : Fro1是No.那欄出現最多次的字串且n1是出現幾次 : : Fro2是No.那欄出現第二多次的字串且n2是出現幾次 : : 我試著用group_by summarise count都試不成功 : : 抑或是也可以用別的套件來處理也OK 勞煩大大們指導 : : [程式範例]: : : x <- data.frame(No.=c(rep('A01',3),rep('A02',3),rep('A03',3)), : : Fro=c('TPE','KOA','KOA','TAI','TAI', : : 'TAI','KOA','TPE','TPE')) : : y <- data.frame(No.=c('A01','A02','A03'),Fro1=c('KOA','TAI','TPE'), : : n1=c(2,3,2),Fro2=c('TPE','NA','KOA'),n2=c(1,'NA',1)) : : [關鍵字]:dplyr : library(dplyr) : # library(magrittr) # 可省略 : x <- data.frame(No=c(rep('A01',3),rep('A02',3),rep('A03',3)), : Fro=c('TPE','KOA','KOA','TAI','TAI','TAI','KOA','TPE','TPE'), : stringsAsFactors = FALSE) : x %>% group_by(No, Fro) %>% summarise(nFro = n()) %>% : summarise(Fro1 = Fro[which.max(nFro)], n1 = max(nFro), : Fro2 = ifelse(n() > 1, Fro[order(nFro) == n()-1], NA_character_), : n2 = ifelse(n() > 1, nFro[order(nFro) == n()-1], NA)) : 如果x的column是factor會有問題,這個你可以自己找出來 : 結果: : No Fro1 n1 Fro2 n2 : 1 A01 KOA 2 TPE 1 : 2 A02 TAI 3 NA NA : 3 A03 TPE 2 KOA 1 : 補充,你有兩個一樣大的最大值會有問題 : 那時候要怎麼解決就看資料使用人要怎麼改.... 這部分空間比較大 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.13.124 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1438837719.A.809.html
文章代碼(AID): #1LmklNW9 (R_Language)
文章代碼(AID): #1LmklNW9 (R_Language)