全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2499 0
2016-11-19
如,我有一串数据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,mydata$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呢?


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群