我希望对两列进行排序并将其粘贴到新列中。
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)
您必须使用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)