在R Programming中对属性中的多个字符串进行排序

时间:2018-04-19 19:46:29

标签: r

我是R的新手。请建议我。我有这样的数据:

data <- c("Room Service|Internet Access|Free Internet", 
  "Room Service|Free Internet", 
  "Swimming Pool|Room Service|Free Internet",
  "Room Service|Swimming Pool|Restaurant|Free Internet", 
  "Room Service")

我需要按字母顺序对每条记录进行排序

(期望输出)

Free Internet,Internet Access,Room Service
Free Internet,Room Service
Free Internet,Room Service,Swimming Pool

2 个答案:

答案 0 :(得分:0)

你可以这样做......

unname(sapply(data, function(x) 
              paste(sort(unlist(strsplit(x, "\\|"))), collapse=",")))

[1] "Free Internet,Internet Access,Room Service"          "Free Internet,Room Service"                         
[3] "Free Internet,Room Service,Swimming Pool"            "Free Internet,Restaurant,Room Service,Swimming Pool"
[5] "Room Service"      

它将每个字符串拆分为|,对这些字符进行排序,并用逗号分隔符将它们粘贴在一起。

答案 1 :(得分:0)

基本上,您只需要根据管道拆分值,对拆分向量进行排序,然后将它们粘贴在一起。你可以做到

sapply(lapply(strsplit(data, "|", fixed=T), sort), paste, collapse="|")

或者从purrr

获得一些帮助
library(purrr)
data %>% 
  strsplit("|", fixed=TRUE) %>% 
  map(sort) %>% 
  map_chr(paste, collapse="|")