来自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上的最好包做词干除去类似的拼写是什么,复数等

+0

所有保证小写?拆分并放弃任何空格或标点符号?你确定'/'或' - '总是无关紧要吗?怎么样*格林巴利综合症*? – smci 2014-09-19 23:52:40

+0

我用“ - ”和“/”检查了所有的术语,实际的正则表达式有点复杂。但我想简化这个问题。在进入这个阶段之前,我正在运行tolower和独特的疾病列表。 – Hans 2014-09-20 00:04:29

你可以使用strsplitunlist的所有元素,以获得向量,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