我有下面的数据框架:
> print(baseline.ratio)
Model Girder 1 Girder 2 Girder 3 Girder 4 Girder 5
1 UG-124 with 9' spacing 1.997 1.789 1.053 1.772 2.017
2 UG-116 with 9' spacing 1.945 1.809 1.060 1.786 1.947
3 UG-84 with 9' spacing 1.934 1.803 1.052 1.757 1.911
4 UG-100 with 9' spacing 1.925 1.826 1.067 1.792 1.913
5 UG-92 with 9' spacing 1.923 1.833 1.070 1.796 1.909
6 UG-108 with 9' spacing 1.908 1.804 1.059 1.776 1.910
7 UG-124 with 12' spacing 2.158 2.037 1.050 1.907 1.936
8 UG-116 with 12' spacing 2.137 2.025 1.044 1.892 1.916
9 UG-108 with 12' spacing 2.122 2.019 1.041 1.881 1.901
10 UG-92 with 12' spacing 2.114 2.012 1.034 1.870 1.888
11 UG-100 with 12' spacing 2.102 2.024 1.042 1.884 1.880
12 UG-84 with 12' spacing 2.099 1.992 1.021 1.850 1.870
13 UG-124 with 15' spacing 2.354 2.184 1.034 2.014 1.971
14 UG-116 with 15' spacing 2.343 2.170 1.030 2.001 1.952
15 UG-92 with 15' spacing 2.312 2.145 1.025 1.977 1.909
16 UG-100 with 15' spacing 2.310 2.144 1.024 1.976 1.912
17 UG-108 with 15' spacing 2.310 2.139 1.019 1.970 1.916
18 UG-84 with 15' spacing 2.296 2.123 1.017 1.955 1.884我希望根据Model列按以下顺序对数据帧进行排序:
c("UG-84 with 9' spacing","UG-84 with 12' spacing","UG-84 with 15' spacing",
"UG-92 with 9' spacing","UG-92 with 12' spacing","UG-92 with 15' spacing",
"UG-100 with 9' spacing","UG-100 with 12' spacing","UG-100 with 15' spacing",
"UG-108 with 9' spacing","UG-108 with 12' spacing","UG-108 with 15' spacing",
"UG-116 with 9' spacing","UG-116 with 12' spacing","UG-116 with 15' spacing",
"UG-124 with 9' spacing","UG-124 with 12' spacing","UG-124 with 15' spacing")当我尝试将其设置为一个因子时,它会更改结果:
baseline.ratio$Model <- factor(baseline.ratio$Model, levels =
c("UG-84 with 9' spacing","UG-84 with 12' spacing","UG-84 with 15' spacing",
"UG-92 with 9' spacing","UG-92 with 12' spacing","UG-92 with 15' spacing",
"UG-100 with 9' spacing","UG-100 with 12' spacing","UG-100 with 15' spacing",
"UG-108 with 9' spacing","UG-108 with 12' spacing","UG-108 with 15' spacing",
"UG-116 with 9' spacing","UG-116 with 12' spacing","UG-116 with 15' spacing",
"UG-124 with 9' spacing","UG-124 with 12' spacing","UG-124 with 15' spacing"))
baseline.ratio$Model <- baseline.ratio$Model[order(baseline.ratio$Model)]给我错误的数据帧:
> print(baseline.ratio)
Model Girder 1 Girder 2 Girder 3 Girder 4 Girder 5
1 UG-84 with 9' spacing 1.997 1.789 1.053 1.772 2.017
2 UG-84 with 9' spacing 1.945 1.809 1.060 1.786 1.947
3 UG-84 with 12' spacing 1.934 1.803 1.052 1.757 1.911
4 UG-84 with 12' spacing 1.925 1.826 1.067 1.792 1.913
5 UG-84 with 15' spacing 1.923 1.833 1.070 1.796 1.909
6 UG-84 with 15' spacing 1.908 1.804 1.059 1.776 1.910
7 UG-92 with 9' spacing 2.158 2.037 1.050 1.907 1.936
8 UG-92 with 9' spacing 2.137 2.025 1.044 1.892 1.916
9 UG-92 with 12' spacing 2.122 2.019 1.041 1.881 1.901
10 UG-92 with 12' spacing 2.114 2.012 1.034 1.870 1.888
11 UG-92 with 15' spacing 2.102 2.024 1.042 1.884 1.880
12 UG-92 with 15' spacing 2.099 1.992 1.021 1.850 1.870
13 UG-100 with 9' spacing 2.354 2.184 1.034 2.014 1.971
14 UG-100 with 9' spacing 2.343 2.170 1.030 2.001 1.952
15 UG-100 with 12' spacing 2.312 2.145 1.025 1.977 1.909
16 UG-100 with 12' spacing 2.310 2.144 1.024 1.976 1.912
17 UG-100 with 15' spacing 2.310 2.139 1.019 1.970 1.916
18 UG-100 with 15' spacing 2.296 2.123 1.017 1.955 1.884我不确定如何在不更改数据帧的列模型中的实际字符串的情况下,按照给定向量定义的顺序对数据帧的行进行排序。
发布于 2020-09-21 22:56:18
我想你应该试试
baseline.ratio <- baseline.ratio[order(baseline.ratio$Model),]发布于 2020-09-21 23:06:15
您可以按所需的顺序创建一个向量
vec <- c("UG-84 with 9' spacing","UG-84 with 12' spacing","UG-84 with 15' spacing",
"UG-92 with 9' spacing","UG-92 with 12' spacing","UG-92 with 15' spacing",
"UG-100 with 9' spacing","UG-100 with 12' spacing","UG-100 with 15' spacing",
"UG-108 with 9' spacing","UG-108 with 12' spacing","UG-108 with 15' spacing",
"UG-116 with 9' spacing","UG-116 with 12' spacing","UG-116 with 15' spacing",
"UG-124 with 9' spacing","UG-124 with 12' spacing","UG-124 with 15' spacing")使用match和order。
baseline.ratio <- baseline.ratio[order(match(baseline.ratio$Model, vec)), ]发布于 2020-09-21 23:06:37
尝试将有序因子格式化为数字,如下所示:
#Values for order
v1 <- c("UG-84 with 9' spacing","UG-84 with 12' spacing","UG-84 with 15' spacing",
"UG-92 with 9' spacing","UG-92 with 12' spacing","UG-92 with 15' spacing",
"UG-100 with 9' spacing","UG-100 with 12' spacing","UG-100 with 15' spacing",
"UG-108 with 9' spacing","UG-108 with 12' spacing","UG-108 with 15' spacing",
"UG-116 with 9' spacing","UG-116 with 12' spacing","UG-116 with 15' spacing",
"UG-124 with 9' spacing","UG-124 with 12' spacing","UG-124 with 15' spacing")
#Create a factor for order
df$Model2 <- factor(df$Model,levels = v1,ordered = T)
#Order
df2 <- df[order(as.numeric(df$Model2)),]
df2$Model2 <- NULL输出:
df2
Model Girder.1 Girder.2 Girder.3 Girder.4 Girder.5
3 UG-84 with 9' spacing 1.934 1.803 1.052 1.757 1.911
12 UG-84 with 12' spacing 2.099 1.992 1.021 1.850 1.870
18 UG-84 with 15' spacing 2.296 2.123 1.017 1.955 1.884
5 UG-92 with 9' spacing 1.923 1.833 1.070 1.796 1.909
10 UG-92 with 12' spacing 2.114 2.012 1.034 1.870 1.888
15 UG-92 with 15' spacing 2.312 2.145 1.025 1.977 1.909
4 UG-100 with 9' spacing 1.925 1.826 1.067 1.792 1.913
11 UG-100 with 12' spacing 2.102 2.024 1.042 1.884 1.880
16 UG-100 with 15' spacing 2.310 2.144 1.024 1.976 1.912
6 UG-108 with 9' spacing 1.908 1.804 1.059 1.776 1.910
9 UG-108 with 12' spacing 2.122 2.019 1.041 1.881 1.901
17 UG-108 with 15' spacing 2.310 2.139 1.019 1.970 1.916
2 UG-116 with 9' spacing 1.945 1.809 1.060 1.786 1.947
8 UG-116 with 12' spacing 2.137 2.025 1.044 1.892 1.916
14 UG-116 with 15' spacing 2.343 2.170 1.030 2.001 1.952
1 UG-124 with 9' spacing 1.997 1.789 1.053 1.772 2.017
7 UG-124 with 12' spacing 2.158 2.037 1.050 1.907 1.936
13 UG-124 with 15' spacing 2.354 2.184 1.034 2.014 1.971https://stackoverflow.com/questions/63994787
复制相似问题