如,我有一串数据mydata:ID TIME VALUE
3 2101-10-20 19:59:00 2.5
3 2101-10-20 19:26:00 2.4
3 2101-10-04 15:24:00 1.7
3 2101-10-05 06:00:00 1.6
4 2101-10-06 05:45:00 1.8
4 2101-10-07 04:30:00 1.8
..... .....
..... .....
接下来我根据TIME(即时间先后)对VALUE进行编排次序:
>mydata$rank<-unlist(tapply(mydata$TIME,crea2$ID,rank))
结果如下:
ID TIME VALUE rank
3 2101-10-20 19:59:00 2.5 16
3 2101-10-20 19:26:00 2.4 15
3 2101-10-04 15:24:00 1.7 1
3 2101-10-05 06:00:00 1.6 2
4 2101-10-06 05:45:00 1.8 3
4 2101-10-07 04:30:00 1.8 4
然后我要提取数据集中,每个ID中,发生时间最早的那个VALUE值,即rank=1的所在行:
newdata<-subset(mydata,rank==1,selcet=c(ID,VALUE))
这个时候问题就来了,结果是这样的:
ID TTIME VALUENUM rank
3 2101-10-04 15:24:00 1.7 1
3 2101-11-05 07:50:00 1.5 1
6 2175-06-15 05:18:00 0.9 1
6 2175-06-04 05:30:00 4.4 1
11 2178-04-23 03:17:00 0.6 1
13 2167-01-15 07:35:00 0.6 1
问题有二:第一,也是最主要的问题,我想提取的是每个ID发生最早的那个数据,所以理论上每个ID只出现一次,那么为什么这里ID中3出现了两次,6也出现了两次呢?
第二,我们明明通过select参数选取ID,VALUE两个变量,可是输出结果为什么还是完整的变量呢?
问题有点啰嗦,但是我希望把问题阐述清楚。求助各位大神。。。问题出在哪儿呢?或者还有没有更优的提取每个ID发生最早的那个VALUE呢?