来自data.frame的独特单词列表
问题描述:
我对R很新,所以请耐心等待我。来自data.frame的独特单词列表
我有一个字符向量,列中描述了不一致格式的疾病和诊断关键字。示例是:
flu
fever/feverish
fever cold
我正在寻找从中提取所有唯一字的最佳方法。我能想出这么远的最佳工艺是给我向量的向量:
[[1]]
[[1]][[1]]
[1] "flu"
[[2]]
[[2]][[1]]
[1] "fever" "feverish"
...
我做到这一点通过:
split_words <- function(x){ strsplit(x, "[^[:alpha:]]+") }
lapply(diagnoses, split_words)
什么是将此转换成一个单一的载体,最好的办法还是单列数据框,以便我可以在此矢量上运行unique
并删除重复项。
R上的最好包做词干除去类似的拼写是什么,复数等
答
你可以使用strsplit
后unlist
的所有元素,以获得向量,unique
的独特元素。
x <- c("flu", "fever/feverish", "fever cold")
(ul <- unlist(strsplit(x, "\\s+|[[:punct:]]")))
# [1] "flu" "fever" "feverish" "fever" "cold"
unique(ul)
# [1] "flu" "fever" "feverish" "cold"
+0
拆分有选择的标点符号。在'[。,;:]上分割''不要在'[ - /]'上分割 – smci 2014-09-20 21:27:33
答
# > df
# illness
#1 flu
#2 fever/feverish
#3 fever cold
udf <- unlist(strsplit(df$illness, "[^[:alnum:]]"))
# [1] "flu" "fever" "feverish" "fever" "cold"
table(udf)
#udf
# cold fever feverish flu
# 1 2 1 1
所有保证小写?拆分并放弃任何空格或标点符号?你确定'/'或' - '总是无关紧要吗?怎么样*格林巴利综合症*? – smci 2014-09-19 23:52:40
我用“ - ”和“/”检查了所有的术语,实际的正则表达式有点复杂。但我想简化这个问题。在进入这个阶段之前,我正在运行tolower和独特的疾病列表。 – Hans 2014-09-20 00:04:29