2

次のような最初の data.frame があります。

DF1

          a    d    c    b
Name1     1    1   -1   -1      
Name2    -1    2   -3    1     
Name3     1    2   -1    0   
Name4     9    0    1   -10    

DF1 の列名を含む 2 番目の data.frame。つまり、次のようになります。

DF2
a・
d・
c・
b

最初にDF2 == a、次にDF2 == c、次にDF2 == dなどに従ってDF1を(降順で)並べたいと思います。実際のケースでは、DF2 は約 1000 の要素と、DF2 の各要素が一致する DF1 の列で構成されています。望ましい出力は次のようになります。

DF2[1,] のソート後

[[1]]

          a    d    c    b
Name1     9    0   -1   -10      
Name2     1    1   -3    1     
Name3     1    2   -1    0   
Name4    -1    2   -3    1    

DF2[2,] のソート後

[[2]]

          a    d    c    b
Name1    -1    2   -3    1     
Name2     1    2   -1    0     
Name3     1    1   -1   -1   
Name4     9    0    1  -10  

等々。

4

2 に答える 2

2

質問が明確になった後に編集:

DF1 <- read.table(text="a    d    c    b
Name1     1    1   -1   -1      
Name2    -1    2   -3    1     
Name3     1    2   -1    0   
Name4     9    0    1   -10 ", header=TRUE)

DF2 <- data.frame(cols=c("a", "c", "d", "b"))


lapply(as.list(DF2$cols), 
       function(x,df) df[order(df[,x], decreasing=TRUE),], 
       df=DF1)

# [[1]]
#        a d  c   b
# Name4  9 0  1 -10
# Name1  1 1 -1  -1
# Name3  1 2 -1   0
# Name2 -1 2 -3   1
# 
# [[2]]
#        a d  c   b
# Name4  9 0  1 -10
# Name1  1 1 -1  -1
# Name3  1 2 -1   0
# Name2 -1 2 -3   1
# 
# [[3]]
#        a d  c   b
# Name2 -1 2 -3   1
# Name3  1 2 -1   0
# Name1  1 1 -1  -1
# Name4  9 0  1 -10
# 
# [[4]]
#        a d  c   b
# Name2 -1 2 -3   1
# Name3  1 2 -1   0
# Name1  1 1 -1  -1
# Name4  9 0  1 -10
于 2013-07-26T09:50:51.007 に答える
0

私はあなたがこれを探していると思います:

DF[Reduce(order,DF),]
       a d  c   b
Name2 -1 2 -3   1
Name1  1 1 -1  -1
Name3  1 2 -1   0
Name4  9 0  1 -10
于 2013-07-26T09:53:25.267 に答える