在 R 中按字母顺序对单元格进行排序
Sort a Cell Alphabetically in R
这是我的示例数据:
id text
1 1 ['a','good', 'fresh', 'apple']
2 2 ['fresh', 'apple', 'good']
3 3 ['bad', 'apple']
id <- c(1,2,3)
text <- c("['a','good', 'fresh', 'apple']","['fresh', 'apple', 'good']","
['bad', 'apple']")
data.frame(id,text)
文本列需要按字母顺序排序,如下所示:
['a','apple', 'fresh', 'good']
['apple', 'fresh', 'good']
['apple', 'bad']
我试过这段代码,但没有用。
data[lapply(strsplit(as.character(data$Lem), ','), sort)),]
大部分工作是将其放入和取出括号和引号。如果子字符串包含逗号,这将不起作用。我建议 运行 一次一行,以了解每一步发生的情况。
library(stringr)
library(magrittr)
df$sorted_text = str_replace_all(text, "\[|\]|'", "") %>%
str_split(",") %>%
lapply(str_trim) %>%
lapply(sort) %>%
lapply(function(x) paste("'", x, "'", sep = "", collapse = ", ")) %>%
unlist %>%
paste0("[", ., "]")
df
# id text sorted_text
# 1 1 ['a','good', 'fresh', 'apple'] ['a', 'apple', 'fresh', 'good']
# 2 2 ['fresh', 'apple', 'good'] ['apple', 'fresh', 'good']
# 3 3 ['bad', 'apple'] ['apple', 'bad']
这是我的示例数据:
id text
1 1 ['a','good', 'fresh', 'apple']
2 2 ['fresh', 'apple', 'good']
3 3 ['bad', 'apple']
id <- c(1,2,3)
text <- c("['a','good', 'fresh', 'apple']","['fresh', 'apple', 'good']","
['bad', 'apple']")
data.frame(id,text)
文本列需要按字母顺序排序,如下所示:
['a','apple', 'fresh', 'good']
['apple', 'fresh', 'good']
['apple', 'bad']
我试过这段代码,但没有用。
data[lapply(strsplit(as.character(data$Lem), ','), sort)),]
大部分工作是将其放入和取出括号和引号。如果子字符串包含逗号,这将不起作用。我建议 运行 一次一行,以了解每一步发生的情况。
library(stringr)
library(magrittr)
df$sorted_text = str_replace_all(text, "\[|\]|'", "") %>%
str_split(",") %>%
lapply(str_trim) %>%
lapply(sort) %>%
lapply(function(x) paste("'", x, "'", sep = "", collapse = ", ")) %>%
unlist %>%
paste0("[", ., "]")
df
# id text sorted_text
# 1 1 ['a','good', 'fresh', 'apple'] ['a', 'apple', 'fresh', 'good']
# 2 2 ['fresh', 'apple', 'good'] ['apple', 'fresh', 'good']
# 3 3 ['bad', 'apple'] ['apple', 'bad']