文本挖掘 - 包含列表的单个列的单词频率

时间:2018-01-25 09:23:45

标签: r text-mining tm word-frequency

这是我的数据集:

https://app.box.com/s/yotsy58ud2k9yk7vs7sj8ksc0favhevv

我正在尝试使用以下结构从单个列创建标记的频率表:

enter image description here

为了简单起见,我尝试使用qdap,但结果不正确

library(qdap)
tags_df <- read.csv(file.choose())
freq_terms(tags_df$tags)

解决方案

改进(创建数据框和排序)Rui给出的解决方案:

sp <- unlist(strsplit(as.character(unlist(tags_df$tags)),'^c\\(|,|"|\\)'))

inx <- sapply(sp, function(y) nchar(trimws(y)) > 0 & !is.na(y))

data <- as_data_frame(table(tolower(sp[inx])))

data <- data[with(data,order(-n)),]

data <- data[1:10,]

1 个答案:

答案 0 :(得分:0)

如果您想要或需要的只是一个频率计数,您可以不使用外部包,基本R具有函数table

sp <- unlist(strsplit(as.character(unlist(tags_df$tags)), '^c\\(|,|"|\\)'))
inx <- sapply(sp, function(y) nchar(trimws(y)) > 0 & !is.na(y))
table(sp[inx])
#    Android        CSS3      Design      Hiring  JavaScript      NextJS 
#          1           1           1           1           4           1 
#     NodeJS programming Programming     ReactJS     Testing          UI 
#          1           1           3           3           1           1 
#         UX   WebDesign      webdev      WebDev 
#          1           2           1           4

编辑。

我刚刚意识到您有"programming""Programming""webdev""WebDev"作为标记,也许您想要进行不区分大小写的计数。如果是这种情况,请尝试改为

table(tolower(sp[inx]))