[程式] R語言中ID排序編號

看板Statistics作者 (斐娟粉絲>//<)時間13年前 (2011/01/25 19:11), 編輯推噓2(2010)
留言12則, 5人參與, 最新討論串1/2 (看更多)
[軟體程式類別]: 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

01/25 19:40, , 1F
不要用R做 進sql去index
01/25 19:40, 1F

01/25 20:25, , 2F
as.factor(id)
01/25 20:25, 2F
我測過, factor似乎更久= = ※ 編輯: XYH 來自: 203.64.84.219 (01/25 20:34)

01/25 20:44, , 3F
unique會比較快嗎?
01/25 20:44, 3F

01/25 20:45, , 4F
不太懂可不可以說詳細點unique?
01/25 20:45, 4F

01/25 20:49, , 5F
unique(id)下seq後再merge回來 不過我猜應該是用sql比較好..
01/25 20:49, 5F

01/25 20:51, , 6F
似乎有點希望,回去試試
01/25 20:51, 6F

01/25 20:58, , 7F
sort by id 之後,
01/25 20:58, 7F

01/25 20:59, , 8F
foo <- as.vector( table(id) )
01/25 20:59, 8F

01/25 20:59, , 9F
newid <- rep( 1: length(foo), foo)
01/25 20:59, 9F

01/25 21:00, , 10F
就可以了,我自己常用的小伎倆
01/25 21:00, 10F

01/25 22:18, , 11F
可以問一下有幾筆資料嗎?  很好奇怎麼會跑這麼久
01/25 22:18, 11F

01/25 22:26, , 12F
其實那是全民健保的資料,大概7000萬筆吧.......
01/25 22:26, 12F
文章代碼(AID): #1DFg_iPB (Statistics)
文章代碼(AID): #1DFg_iPB (Statistics)