Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于序列对行重新排序_R_Sequence - Fatal编程技术网

R 基于序列对行重新排序

R 基于序列对行重新排序,r,sequence,R,Sequence,有了下面的数据,我想在每个惟一的projectd中重新排列行 Data <- data.frame(ProjectID=c(123,123,123,124,125,125,126,126,126,126,128,129), Value=c(1,4,7,3,8,9,2,5,3,7,2,6), Sequence=c(1,3,2,1,3,2,1,1,4,2,2,4)) 数据其他情况,即2、3、1或2、1、3或1、2、3如何etc@ak

有了下面的数据,我想在每个惟一的projectd中重新排列行

Data <- data.frame(ProjectID=c(123,123,123,124,125,125,126,126,126,126,128,129),
               Value=c(1,4,7,3,8,9,2,5,3,7,2,6),
               Sequence=c(1,3,2,1,3,2,1,1,4,2,2,4))

数据其他情况,即2、3、1或2、1、3或1、2、3如何etc@akrun我只对这两个案例感兴趣(1,3,2和1,4,2)。谢谢你的帮助。对你的代码有一个理论上的解释。如果对于每个项目ID,所讨论的序列不是该ProjectID中唯一的行,该怎么办。例如,如果Projectd126有4行,序列是1,1,4,2,而不是3行呢。资料
Result <- data.frame(ProjectID=c(123,123,123,124,125,125,126,126,126,126,128,129),
                 Value=c(4,1,7,3,8,9,2,3,5,7,2,6),
                 Sequence=c(3,1,2,1,3,2,1,4,1,2,2,4))
do.call(rbind,
    lapply(split(Data, Data$ProjectID), function(a){
        if(identical(a$Sequence, c(1,4,2))){
            a[match(a$Sequence, c(4,1,2)),]
        }else if(identical(a$Sequence, c(1,3,2))){
            a[match(a$Sequence, c(3,1,2)),]
        }else{
            a
        }
    }
)
)
#      ProjectID Value Sequence
#123.2       123     4        3
#123.1       123     1        1
#123.3       123     7        2
#124         124     3        1
#125.5       125     8        3
#125.6       125     9        2
#126.8       126     5        4
#126.7       126     2        1
#126.9       126     7        2
#128         128     2        2
#129         129     6        4