R 如何在每列中选择列中最前面的2个值,并使用值和行名称报告?

R 如何在每列中选择列中最前面的2个值,并使用值和行名称报告?,r,multiple-columns,ranking,R,Multiple Columns,Ranking,我有一个矩阵的列,其中包含用户唯一ID的名称。列中的每一行表示基于预测风险的回归模型的风险因素得分。我想报告每个人的前2个风险因素(代表因素的行名称和实际值)以及他们的ID 我一直在寻找解决方案,发现了很多未遂事件。例如,max可以工作,如果我只想要前1个值而不需要行名称,并且我没有将个人作为列,那么我想我可以使用sort(x,partial=n-1)[n-1]的一些变体 我的数据如下所示: ID.H00034222 ID.H00034305 a.score 0.0400938

我有一个矩阵的列,其中包含用户唯一ID的名称。列中的每一行表示基于预测风险的回归模型的风险因素得分。我想报告每个人的前2个风险因素(代表因素的行名称和实际值)以及他们的ID

我一直在寻找解决方案,发现了很多未遂事件。例如,
max
可以工作,如果我只想要前1个值而不需要行名称,并且我没有将个人作为列,那么我想我可以使用
sort(x,partial=n-1)[n-1]
的一些变体

我的数据如下所示:

        ID.H00034222 ID.H00034305
a.score  0.040093810   0.04009381
b.score -0.038265220  -0.03826522
c.score  0.044418130   0.04441813
d.score -0.418624640  -0.05656504
e.score -0.005192439   0.10851938
f.score  0.005026030   0.02174170

df <- structure(c(0.04009381, -0.03826522, 0.04441813, -0.41862464, 
-0.005192439, 0.00502603, 0.04009381, -0.03826522, 0.04441813, 
-0.05656504, 0.10851938, 0.0217417), .Dim = c(6L, 2L), .Dimnames = list(
    c("a.score", "b.score", "c.score", "d.score", "e.score", 
    "f.score"), c("ID.H00034222", "ID.H00034305")))
ID.H00034222 ID.H00034305
a、 得分0.040093810 0.04009381
b、 得分-0.038265220-0.03826522
c、 得分0.044418130 0.04441813
d、 得分-0.418624640-0.056504
e、 分数-0.005192439 0.10851938
f、 得分0.00502630 0.02174170
df一些玩具数据:

> foo <- matrix(rnorm(80),nrow=20,dimnames=list(letters[1:20],LETTERS[23:26]))
> foo
           W           X           Y          Z
a  1.3550138  1.35438637  0.43150124 -0.7087100
b -1.3200136 -0.82764303 -0.01480796  2.2399561
c -1.0018050 -0.04941702 -2.46454058  0.2516673
d  0.7877259  0.08713982  1.25948179  1.1901716
e  1.5834800  0.06905996  0.37453295  0.5343909
f  0.3607650  0.22815776 -0.24688689 -0.7784353
g  0.2071689 -0.21987249 -0.38334840 -0.0568370
h  0.7502296  0.61355174 -0.38836131  1.8772838
i -1.1608980  0.75128093 -0.13562930 -1.3183407
j -0.5419957 -0.43251911 -1.91773334  0.8227418
k  1.1222314 -0.52768270  1.13687919  0.2458857
l -0.2158528 -0.43057554 -0.93613664  0.7861322
m  0.2933530 -1.22532466  0.98192839  0.6581522
n -0.6324390 -0.90072134 -1.89817529 -1.4419014
o  0.6956912  1.28457179  0.65234730  0.6524573
p -1.4979845 -0.23898356  1.82825548 -0.1819744
q  1.5459565  0.38683197 -1.23645565  1.0340520
r -1.3844880  0.05111238 -0.51715069 -0.1702139
s -2.1096706  0.46527795 -1.13718323  0.8133859
t -1.5700089  0.09305299  2.33807078  0.8382010
提取每列前两个值的名称:

> apply(foo,2,function(xx)tail(sort(xx),2))
            W        X        Y        Z
[1,] 1.545957 1.284572 1.828255 1.877284
[2,] 1.583480 1.354386 2.338071 2.239956
> apply(foo,2,function(xx)tail(names(sort(xx)),2))
     W   X   Y   Z  
[1,] "q" "o" "p" "h"
[2,] "e" "a" "t" "b"
> 
一些玩具数据:

> foo <- matrix(rnorm(80),nrow=20,dimnames=list(letters[1:20],LETTERS[23:26]))
> foo
           W           X           Y          Z
a  1.3550138  1.35438637  0.43150124 -0.7087100
b -1.3200136 -0.82764303 -0.01480796  2.2399561
c -1.0018050 -0.04941702 -2.46454058  0.2516673
d  0.7877259  0.08713982  1.25948179  1.1901716
e  1.5834800  0.06905996  0.37453295  0.5343909
f  0.3607650  0.22815776 -0.24688689 -0.7784353
g  0.2071689 -0.21987249 -0.38334840 -0.0568370
h  0.7502296  0.61355174 -0.38836131  1.8772838
i -1.1608980  0.75128093 -0.13562930 -1.3183407
j -0.5419957 -0.43251911 -1.91773334  0.8227418
k  1.1222314 -0.52768270  1.13687919  0.2458857
l -0.2158528 -0.43057554 -0.93613664  0.7861322
m  0.2933530 -1.22532466  0.98192839  0.6581522
n -0.6324390 -0.90072134 -1.89817529 -1.4419014
o  0.6956912  1.28457179  0.65234730  0.6524573
p -1.4979845 -0.23898356  1.82825548 -0.1819744
q  1.5459565  0.38683197 -1.23645565  1.0340520
r -1.3844880  0.05111238 -0.51715069 -0.1702139
s -2.1096706  0.46527795 -1.13718323  0.8133859
t -1.5700089  0.09305299  2.33807078  0.8382010
提取每列前两个值的名称:

> apply(foo,2,function(xx)tail(sort(xx),2))
            W        X        Y        Z
[1,] 1.545957 1.284572 1.828255 1.877284
[2,] 1.583480 1.354386 2.338071 2.239956
> apply(foo,2,function(xx)tail(names(sort(xx)),2))
     W   X   Y   Z  
[1,] "q" "o" "p" "h"
[2,] "e" "a" "t" "b"
> 

您能为本例提供所需的输出吗?您能为本例提供所需的输出吗?