R 是否可以将两个有序因子列合并,使更高级别的因子具有优先级?

R 是否可以将两个有序因子列合并,使更高级别的因子具有优先级?,r,join,dplyr,R,Join,Dplyr,我有两个数据集,它们具有有序的级别因子列,我想合并。我希望合并这些列,以便因子中的较高级别(例如,“整体”)比较低级别“优先” 库(dplyr) 等级顺序=c(“无”、“一半”、“全部”) x=tibble(id=1:4, var=系数(c(“无”、“一半”、“一半”、“全部”), 级别=级别(顺序,顺序=T)) y=tibble(id=1:4, var=系数(c(“全部”、“全部”、“一半”、“无”), 级别=级别(顺序,顺序=T)) 左联合(x,y,by=“id”) #>#tibble:4

我有两个数据集,它们具有有序的级别因子列,我想合并。我希望合并这些列,以便因子中的较高级别(例如,“整体”)比较低级别“优先”

库(dplyr)
等级顺序=c(“无”、“一半”、“全部”)
x=tibble(id=1:4,
var=系数(c(“无”、“一半”、“一半”、“全部”),
级别=级别(顺序,顺序=T))
y=tibble(id=1:4,
var=系数(c(“全部”、“全部”、“一半”、“无”),
级别=级别(顺序,顺序=T))
左联合(x,y,by=“id”)
#>#tibble:4 x 3
#>id变量x变量y
#>     
#>1不完整
#>2半整
#>三分半
#>4完全没有
由(v0.3.0)于2020年12月9日创建

我希望看到的输出如下所示

#>#tible:4 x 2
#>id变量
#>    
#>1整个
#>2整个
#>三分半
#>4整个

由于您已对因子进行排序,因此可以在这两个因子之间取最大值

library(dplyr)
left_join(x, y, by = "id") %>% transmute(id, var = pmax(var.x, var.y))

#     id var  
#  <int> <ord>
#1     1 whole
#2     2 whole
#3     3 half 
#4     4 whole
库(dplyr)
左联合(x,y,by=“id”)%%>%transmute(id,var=pmax(var.x,var.y))
#id变量
#   
#1整个
#2整个
#三分半
#4整个

由于您已对因子进行排序,因此可以在这两个因子之间取最大值

library(dplyr)
left_join(x, y, by = "id") %>% transmute(id, var = pmax(var.x, var.y))

#     id var  
#  <int> <ord>
#1     1 whole
#2     2 whole
#3     3 half 
#4     4 whole
库(dplyr)
左联合(x,y,by=“id”)%%>%transmute(id,var=pmax(var.x,var.y))
#id变量
#   
#1整个
#2整个
#三分半
#4整个

我们可以使用
数据表

library(data.table)
setDT(x)[setDT(y), var := pmax(var, i.var), on = .(id)]
x
#   id   var
#1:  1 whole
#2:  2 whole
#3:  3  half
#4:  4 whole

我们可以使用
data.table

library(data.table)
setDT(x)[setDT(y), var := pmax(var, i.var), on = .(id)]
x
#   id   var
#1:  1 whole
#2:  2 whole
#3:  3  half
#4:  4 whole