首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于字符类型列的多个数据表排序

基于字符类型列的多个数据表排序
EN

Stack Overflow用户
提问于 2019-09-07 00:54:17
回答 1查看 89关注 0票数 0

我有两个数据表,并希望对它们进行排序,使第一个表的行值与基于一个名为Parameter的列的第二个表的行值相同。

使用order(),问题是它只会根据数据表输入进行排序。但是,为了确保不仅两个数据表都是基于Parameter列排序的,而且还通过比较两个数据表之间的列Parameter行来正确地排序,作为是否正确的检查。

请分享更快的方法来做这件事。

第一表输入

代码语言:javascript
复制
Parameter   Data
R-1          1
R-2          1
R-3          1
P-11         1
P-12         1
P-8          2
P-9          1
P-10         1
R-4          1
R-5          1
P-14         1
P-15         1

第二表输入

代码语言:javascript
复制
Parameter   Data
R-1          2
P-9          2
R-3          2
P-11         2
P-12         2
P-8          2
R-2          2
P-10         2
R-4          2
R-5          3
P-14         2
P-15         2

期望输出

第一表输出

代码语言:javascript
复制
Parameter   Data
R-1         1
R-2         1
R-3         1
R-4         1
R-5         1
P-8         2
P-9         1
P-10        1
P-11        1
P-12        1
P-14        1
P-15        1

第二表输出

代码语言:javascript
复制
Parameter   Data
R-1         2
R-2         2
R-3         2
R-4         2
R-5         3
P-8         2
P-9         2
P-10        2
P-11        2
P-12        2
P-14        2
P-15        2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-07 03:47:59

下面是一种使用dplyrtidyr::separate的方法。

代码语言:javascript
复制
library(dplyr); library(tidyr)

# Function to split up parameter into two pieces and sort like example
sort_table <- function(df) {
  df %>%  separate(Parameter, c("letter", "num"), remove = F) %>%
  arrange(desc(letter), as.numeric(num))
}

# Join the two sorted tables
full_join(
  sort_table(table_1),
  sort_table(table_2),
  by = c("Parameter", "letter", "num")
)



#   Parameter letter num Data.x Data.y
#1        R-1      R   1      1      2
#2        R-2      R   2      1      2
#3        R-3      R   3      1      2
#4        R-4      R   4      1      2
#5        R-5      R   5      1      3
#6        P-8      P   8      2      2
#7        P-9      P   9      1      2
#8       P-10      P  10      1      2
#9       P-11      P  11      1      2
#10      P-12      P  12      1      2
#11      P-14      P  14      1      2
#12      P-15      P  15      1      2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57829899

复制
相关文章

相似问题

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