看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: R [程式問題]: 資料處理 [軟體熟悉度]: 高(1年以上) [問題敘述]: 小弟最近在處理醫院病歷資料時, 因為有需要對ID進行比較, 並產生新ID, 可是因為原ID是加密過後的檔案為32字元每次比較均須相當多的時間, 故光是這個步驟可能就會耗時數週。 小弟發現, 如果能夠善用R內建的函式, 相關運作能省很多的時間。 譬如我本來也用比較ID去剔除相同之ID, 後發現用duplicated函數可以將原有數天的工作, 壓縮至一分鐘內完成。 下述的程式碼雖可以執行, 可是至少要一星期以上方能完成。 因此想請教大家有沒有更快的方式? 資料大致如下: ----------------------------------- 原有ID 診斷碼 擬創造新ID ABCDEQ 295 1 ABCDEQ 001 1 ABCDEQ 005 1 DDWWSWW 420 2 DDWWSWW 538 2 DDWWSWW 292 2 KKQZZAQ 141 3 KKQZZAQ 141 3 . . . [程式範例]: 原有資料代號為CD NewID<-c(1) #第一個ID為1 for(i in 2: 100) #假定100筆病歷 { if(CD[i,1]==CD[i-1,1]) #若該ID與前一個ID相同 { NewID[i]<-NewID[i-1] #則NewID[i]與前個NewID元素 } #相同, else { NewID[i]<-NewID[i-1]+1 #反之代號增加 } } ----------------------------------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.64.84.219
memphis:不要用R做 進sql去index 01/25 19:40
lin15:as.factor(id) 01/25 20:25
我測過, factor似乎更久= = ※ 編輯: XYH 來自: 203.64.84.219 (01/25 20:34)
lin15:unique會比較快嗎? 01/25 20:44
XYH:不太懂可不可以說詳細點unique? 01/25 20:45
lin15:unique(id)下seq後再merge回來 不過我猜應該是用sql比較好.. 01/25 20:49
XYH:似乎有點希望,回去試試 01/25 20:51
bmka:sort by id 之後, 01/25 20:58
bmka:foo <- as.vector( table(id) ) 01/25 20:59
bmka:newid <- rep( 1: length(foo), foo) 01/25 20:59
bmka:就可以了,我自己常用的小伎倆 01/25 21:00
gsuper:可以問一下有幾筆資料嗎?  很好奇怎麼會跑這麼久 01/25 22:18
XYH:其實那是全民健保的資料,大概7000萬筆吧....... 01/25 22:26