我需要DF根据列中的相应名称对数据框()中的行重新排序DF.我DF看起来像这样
beta se hr m
0.1 0.01 1 xl.vl.pl
0.2 0.02 2 l.vl.ce
0.3 0.03 3 s.vl.fc
0.4 0.04 4 idl.p
0.1 0.01 1 m.vl.pl
0.2 0.02 2 xs.vl.ce
0.3 0.03 3 l.vl.fc
0.4 0.04 4 idl.p
0.4 0.04 4 xxl.vl.pl
Run Code Online (Sandbox Code Playgroud)
我想根据专栏重新排序m,这样就可以了
0.4 0.04 4 xxl.vl.pl
0.1 0.01 1 xl.vl.pl
0.2 0.02 2 l.vl.ce
0.3 0.03 3 l.vl.fc
0.1 0.01 1 m.vl.pl
0.4 0.04 4 idl.p
0.4 0.04 4 idl.p
0.3 0.03 3 s.vl.fc
0.2 0.02 2 xs.vl.ce
Run Code Online (Sandbox Code Playgroud)
我感谢任何帮助和建议.
您可以使用与m的第一部分相对应的有序因子(您可以通过调用来检索sub),根据您的意愿(xxl, xl, l, m, idl ,s, xs)进行排序,然后您可以使用它来订购data.frame:
DF[order(factor(sub("([^.]+)\\..+", "\\1", DF$m),
levels=c("xxl", "xl", "l", "m", "idl" ,"s", "xs"), ordered=TRUE)), ]
# beta se hr m
# 9 0.4 0.04 4 xxl.vl.pl
# 1 0.1 0.01 1 xl.vl.pl
# 2 0.2 0.02 2 l.vl.ce
# 7 0.3 0.03 3 l.vl.fc
# 5 0.1 0.01 1 m.vl.pl
# 4 0.4 0.04 4 idl.p
# 8 0.4 0.04 4 idl.p
# 3 0.3 0.03 3 s.vl.fc
# 6 0.2 0.02 2 xs.vl.ce
Run Code Online (Sandbox Code Playgroud)