作者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/cn.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