我知道這個問題是之前做出的,但是我的問題與我所看到的有點不同。以前的問題和答案我無法解決。按另一個d.frame的列對d.frame進行排序R
我想使用另一個數據框的列對數據框進行排序。但有一個特點。第一個數據幀對於每個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
我不知道什麼意思!
嗨,如果有答案解決了你的問題,你可以點擊「接受它」,讓其他人可以看到它嗎?謝謝 – agenis