[程式] R整理資料的問題

看板Statistics作者 (ppp)時間9年前 (2016/10/24 14:49), 9年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/2 (看更多)
[軟體程式類別]:R [程式問題]:資料處理 [軟體熟悉度]: 新手 [問題敘述]: 現在我的資料大概長這樣 ID year 1 2000 1 2005 1 2003 2 2001 2 2002 3 2003 3 2005 3 2008 3 2004 現在我想算與每個ID中最小年份的差(yrhat) ID year yrhat A 2000 0 A 2005 5 A 2003 3 B 2001 0 B 2002 1 C 2003 0 C 2005 2 C 2008 5 C 2004 1 [程式範例]: 我現在想到的是用for迴圈寫 for(ID in 1:3){ ee<-length(table(data$ID)[table(data$ID)==ID]) for(i in 1:ee){ k<-data[data$ID==names(table(data$ID)[table(data$ID)==ID][i]),] k[,c("yrhat")]<-k[,c("year")]-min( k[,c("year")] data[data$ID==names(table(data$ID)[table(data$ID)==ID][i]),c("yrhat")]<- k[,c("yrhat")] } } 這可以跑出我要的結果 但是我現在資料有超過50萬筆 ID有16萬個 所以會跑好幾天 想請問版上的高手有沒有知道比較快的方法 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.161.23 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1477291764.A.1BA.html ※ 編輯: ppp1987 (140.109.161.23), 10/24/2016 14:53:10 ※ 編輯: ppp1987 (140.109.161.23), 10/24/2016 14:54:19 ※ 編輯: ppp1987 (140.109.161.23), 10/24/2016 15:05:26

10/28 12:22, , 1F
yrhat=year-min(year) 不就好了?
10/28 12:22, 1F
文章代碼(AID): #1O3Qxq6w (Statistics)
文章代碼(AID): #1O3Qxq6w (Statistics)