【问题标题】:Ordering column in dataframe by specific sequence in R按 R 中的特定顺序对数据框中的列进行排序
【发布时间】:2014-04-16 11:37:10
【问题描述】:

我正在处理与这里类似的数据框:

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()函数是我的朋友,但我的尝试没有结果。

任何帮助将不胜感激。

真诚的 是的

【问题讨论】:

    标签: r sequence subject


    【解决方案1】:

    是的,您可以使用order() 执行此操作,您只需指定您希望数据框排序的变量:

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

    您也可以使用 plyr 中的arrange(),这也是正确的:

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

    【讨论】:

      猜你喜欢
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 2017-04-08
      相关资源
      最近更新 更多