如何在 mutate 语句中对两列进行排序和粘贴?

spa*_*olo 1 r dplyr

我希望对两列进行排序并将其粘贴到新列中。

test = data.frame('a'='jump','b'='jam') 
test %>% mutate(new=paste(sort(a,b)))
Run Code Online (Sandbox Code Playgroud)

预期输出是包含三列的数据框:

'a'='jump','b'='jam','c'='jamjump'
Run Code Online (Sandbox Code Playgroud)

Ron*_*hah 5

您必须使用rowwise按行方式粘贴字符串。

library(dplyr)

test %>%
  rowwise() %>%
  mutate(c = paste0(sort(c(a, b)), collapse = ''))

#   a     b     c      
#  <chr> <chr> <chr>  
#1 jump  jam   jamjump
#2 b     a     ab     
Run Code Online (Sandbox Code Playgroud)

rowwise在较大的数据集上往往会比较慢,为了避免使用它,您可以在粘贴之前使用pmin/pmax对字符串进行排序。

test %>% 
  mutate(col1 = pmin(a, b), col2 = pmax(a, b), 
         c = paste0(col1, col2)) %>%
  select(a, b, c)
Run Code Online (Sandbox Code Playgroud)

数据

test = data.frame('a'=c('jump', 'b'),'b'=c('jam', 'a'))
Run Code Online (Sandbox Code Playgroud)