首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列更改为系数会更改列中的字符串

将列更改为系数会更改列中的字符串
EN

Stack Overflow用户
提问于 2020-09-21 22:53:03
回答 3查看 27关注 0票数 0

我有下面的数据框架:

代码语言:javascript
复制
> 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列按以下顺序对数据帧进行排序:

代码语言:javascript
复制
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")

当我尝试将其设置为一个因子时,它会更改结果:

代码语言:javascript
复制
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)]

给我错误的数据帧:

代码语言:javascript
复制
> 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

我不确定如何在不更改数据帧的列模型中的实际字符串的情况下,按照给定向量定义的顺序对数据帧的行进行排序。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-21 22:56:18

我想你应该试试

代码语言:javascript
复制
baseline.ratio <- baseline.ratio[order(baseline.ratio$Model),]
票数 1
EN

Stack Overflow用户

发布于 2020-09-21 23:06:15

您可以按所需的顺序创建一个向量

代码语言:javascript
复制
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")

使用matchorder

代码语言:javascript
复制
baseline.ratio <- baseline.ratio[order(match(baseline.ratio$Model, vec)), ]
票数 1
EN

Stack Overflow用户

发布于 2020-09-21 23:06:37

尝试将有序因子格式化为数字,如下所示:

代码语言:javascript
复制
#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

输出:

代码语言:javascript
复制
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.971
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63994787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档