如何在不丢失行名的情况下对R数据帧列进行排序?
当我们在R中对数据框列进行排序时,行名会丢失,但是我们可能需要它们。因此,需要在不丢失行名的情况下进行排序,并且可以在order函数的帮助下进行排序。例如,如果我们有一个名为df的数据框,该数据框具有一列x,则可以使用以下命令完成x的排序而不会丢失行名-
df[order(df$x),,drop=FALSE]
考虑以下数据帧-
示例
x1<-rnorm(20)输出结果x2<-rnorm(20,525,23.2)
df1<-data.frame(x1,x2)
row.names(df1)<-LETTERS[1:20]
df1
x1 x2A 1.7337922 534.3863
B -0.6754809 534.8879
C 0.1106191 520.2269
D 0.2270701 513.5676
E -0.5678853 558.2216
F -0.1885840 534.2416
G 0.2192299 552.8982
H 1.5135296 488.6875
I 0.9043322 529.6242
J 0.7014559 552.5001
K 0.2591020 514.1494
L -1.1273898 580.5344
M -0.1771963 516.4953
N 0.2317244 503.3607
O 0.6529487 501.4557
P -0.9165830 496.4222
Q -2.2928809 490.9002
R 0.7511574 519.3586
S 1.5003125 504.2702
T 1.3791592 496.9542
基于x2对df1进行排序而不会丢失行名-
df1 [order(df1 $x2),, drop = FALSE]
x1 x2H 1.5135296 488.6875
Q -2.2928809 490.9002
P -0.9165830 496.4222
T 1.3791592 496.9542
O 0.6529487 501.4557
N 0.2317244 503.3607
S 1.5003125 504.2702
D 0.2270701 513.5676
K 0.2591020 514.1494
M -0.1771963 516.4953
R 0.7511574 519.3586
C 0.1106191 520.2269
I 0.9043322 529.6242
F -0.1885840 534.2416
A 1.7337922 534.3863
B -0.6754809 534.8879
J 0.7014559 552.5001
G 0.2192299 552.8982
E -0.5678853 558.2216
L -1.1273898 580.5344
示例
y1<-rpois(20,5)输出结果y2<-rpois(20,8)
df2<-data.frame(y1,y2)
row.names(df2)<-letters[1:20]
df2
y1 y2a 5 7
b 5 5
c 4 6
d 7 1
e 3 8
f 7 9
g 5 9
h 2 7
i 3 14
j 12 6
k 6 9
l 12 7
m 2 11
n 5 6
o 5 11
p 3 3
q 6 10
r 3 9
s 7 8
t 6 8
基于y1对df2进行排序而不会丢失行名-
df2 [order(df2 $y1),, drop = FALSE]
输出结果
y1 y2h 2 7
m 2 11
e 3 8
i 3 14
p 3 3
r 3 9
c 4 6
a 5 7
b 5 5
g 5 9
n 5 6
o 5 11
k 6 9
q 6 10
t 6 8
d 7 1
f 7 9
s 7 8
j 12 6
l 12 7
以上是 如何在不丢失行名的情况下对R数据帧列进行排序? 的全部内容, 来源链接: utcz.com/z/349902.html