我有两个数据表,并希望对它们进行排序,使第一个表的行值与基于一个名为Parameter的列的第二个表的行值相同。
使用order(),问题是它只会根据数据表输入进行排序。但是,为了确保不仅两个数据表都是基于Parameter列排序的,而且还通过比较两个数据表之间的列Parameter行来正确地排序,作为是否正确的检查。
请分享更快的方法来做这件事。
第一表输入
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第二表输入
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期望输出
第一表输出
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第二表输出
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发布于 2019-09-07 03:47:59
下面是一种使用dplyr和tidyr::separate的方法。
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 2https://stackoverflow.com/questions/57829899
复制相似问题