文本挖掘 - 来自包含列表的单个列的词频
Text mining - word frequency from a single column containing list
这是我的数据集:
https://app.box.com/s/yotsy58ud2k9yk7vs7sj8ksc0favhevv
我正在尝试从具有以下结构的单列中创建标签的频率 table:
为了简单起见,我尝试使用 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,]
如果你想要或需要的只是一个频率计数,你可以不用外部包,base 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]))
这是我的数据集:
https://app.box.com/s/yotsy58ud2k9yk7vs7sj8ksc0favhevv
我正在尝试从具有以下结构的单列中创建标签的频率 table:
为了简单起见,我尝试使用 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,]
如果你想要或需要的只是一个频率计数,你可以不用外部包,base 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]))