作者ppp1987 (ppp)
看板Statistics
標題[程式] R整理資料的問題
時間Mon Oct 24 14:49:21 2016
[軟體程式類別]: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://webptt.com/m.aspx?n=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
1F:推 sweetJ: yrhat=year-min(year) 不就好了? 10/28 12:22