[討論] 每行抓取特定值

看板R_Language作者 (OMG)時間9年前 (2015/07/20 13:57), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/2 (看更多)
[問題類型]: 想針對每行判別是否有包含某特定值 [軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 資料格式如下: ID D1 D2 D3 D4....D50 A 123 23 ......... 55 B 24 005 C 504 . . 002 D 002 . . . . . . ... H . . 002 ... . . . ... XX 410 . ... ============================ CODE1<-有指定某些數字一 CODE2<-有指定某些數字二 . . . CODE15<-有指定某些數字十五 這是醫院資料, 每個人若最多有50個診斷欄位(D1-->D50), 而CODE1...CODE15是每個疾病的指定疾病碼, 想要判斷每個人是否有罹患這些疾病。 EX: 假設CODE1=002(中風(stroke)疾病碼), 我就會去判斷每個診斷欄位中(D1-->D50)是否有002這個疾病碼, ID=C,在D4中有抓到中風碼 ID=D,在D1中有抓到中風碼 ID=H,在D3中有抓到中風碼 希望輸出結果為 ID stroke .... A 0 B 0 C 1 D 1 . . . . H 1 . . XX . [你的答案]: 目前自己的想法是將這15個指定的疾病放在list,再用apply去做判斷。是可以執行的。 只是想了解各個高手們會以怎樣的思考方式或不同的函數作運算? 藉由每個人的思考方式,好像更能刺激自己的想法。 disease<-list( CODE1=c(002) . . CODE15=c(23,555,467..) ) disease_yes<-function(x,code){ rowname <- which(x%in%code) return(rowname) } sub_data1<-data.frame(data1[,1]) #第一欄是ID for(i in 1:length(disease)){ sub_data1[,i+1]<-0 rowname<-sort(unique(unlist(apply(data1,2,FUN=disease_yes,code=disease[[i]])))) sub_data1[rowname,i+1]<-1 colnames(sub_data1)[i+1]<-names(disease)[i] } [關鍵字]: apply -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.125.94 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1437371866.A.956.html

07/20 14:02, , 1F
tidyr::gather + dplyr::summarise
07/20 14:02, 1F
文章代碼(AID): #1Lh8tQbM (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1Lh8tQbM (R_Language)