我是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
答案 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="|")