2014-04-16 37 views
1

我与此类似这里的数据帧上的工作:排序列由特定序列R中

ID = c("1","1","1","1","1","1","1","2","2","2","2","2","2","2","2","2","2","2","2","2","2") 
TIME = c("0", "0.5", "1","1.5","2","2.5","3","0","0", "0.5","0.5", "1","1","1.5","1.5","2","2","2.5","2.5","3","3") 
OBS = c("0", "0.73", "0.98", "1.24", "2.06","2.56","4.01", "0", "0.03", "0.76", "0.85", "2.13","2.78","3.9", "4.1", "5.4", "5.6", "7.8", "8.0","8.4","8.8") 
VISITNUM = c("1","1","1","1","1","1","1","1","2", "1","2","1","2","1","2","1","2","1","2","1","2") 
DF = data.frame(ID, TIME, OBS, VISITNUM) 

我有麻烦订货数据帧 - 基本上我想为了通过我的数据下面的时间序列:

TIMEORDERED <- c("0","0.5","1","1.5","2","2","2.5","3") 

给这个

ID = c("1","1","1","1","1","1","1","2","2","2","2","2","2","2","2","2","2","2","2","2","2") 
TIME = c("0", "0.5", "1","1.5","2","2.5","3","0", "0.5", "1","1.5","2","2.5","3","0", "0.5", "1","1.5","2","2.5","3") 
OBS= c("0", "0.73", "0.98", "1.24", "2.06","2.56","4.01", "0", "0.76", "2.13","3.9", "5.4", "7.8", "8.4", "0.03", "0.85", "2.78", "4.1","5.6","8.0","8.8") 
VISITNUM = c("1","1","1","1","1","1","1","1","1","1","1","1","1","1","2","2","2","2","2","2","2") 
DFIWANT = data.frame(ID, TIME, OBS, VISITNUM) 

的问题是有关于测量相同的主题(DF $ ID = 2)(但不同的访问,请参阅DF $ VISITNUM)。

我怀疑plyr包中的order()函数或arrange()函数是我的朋友,但我的努力并没有取得丰硕的成果。

任何帮助,将不胜感激。

Sincerily Ÿ

回答

0

是的,你可以用order()做到这一点,你只需要指定的命令你想要的数据帧中的变量:

DF.ordered <- DF[order(DF$ID, DF$VISITNUM, DF$TIME),] 

你也是正确的,你可以使用arrange()来自plyr:

library(plyr) 
DF.arranged <- arrange(DF, ID, VISITNUM, TIME)