我知道这个问题以前已经被提出过了,但我的问题与我所见到的有些不同。我不能用以前的问题和答案来解决它。
我想使用另一个数据框的列对数据框进行排序。但有一个特殊情况。第一个数据框对于每个IID都有多行。以下是数据结构和问题的示例:
x<-c(rep("sc256",times=5),rep("sc784",times=5),rep("sc326",times=5),rep("sc120",times=5))
x2<-c("sc256","sc784","sc326","sc120")
y<-round(runif(20,1,10),digits=3)
y2<-round(runif(20,10,20),digits=3)
y3<-c(2,1,2,1)
M1<-data.frame(x,y,y2)
M2<-data.frame(x2,y3)
M2$y3<-as.factor(M2$y3)
M2.s<-M2[order(M2$y3),]
M1.s<-M1[order(M2.s$x),]
这个脚本生成一个名为M1.s的数据框,格式如下:
x y y2
2 sc256 6.585 17.115
3 sc256 7.794 14.855
4 sc256 5.038 15.650
1 sc256 7.451 16.205
这不是我要找的内容。我要找的是按M2第一列排列的M1数据库,就像这样:
x y y2
6 sc784 2.828 13.974
7 sc784 3.966 17.332
8 sc784 4.733 12.948
9 sc784 6.933 12.088
10 sc784 3.182 14.913
11 sc326 5.189 11.808
12 sc326 5.660 19.475
13 sc326 2.403 14.719
14 sc326 4.881 13.884
15 sc326 3.913 10.947
16 sc120 9.122 17.839
17 sc120 4.676 10.343
18 sc120 9.184 18.367
19 sc120 7.671 18.212
20 sc120 5.302 11.500
1 sc256 7.451 16.205
2 sc256 6.585 17.115
3 sc256 7.794 14.855
4 sc256 5.038 15.650
5 sc256 1.684 14.698
这只是我的问题的一个小示例,因为在我的真实数据中我有几千行。当我尝试将此脚本应用于我的真实数据时,我收到了以下错误:
Error in Fula[order(Fula.s$levels.dat.IID.), ] : subscript out of bounds
我不知道这意味着什么!