R统计人物出场次数,显示都是0
R语言统计人物出场次数显示为0
运行出来图片是这样
是因为主角名单有问题吗?因为如果删改一下主角名单,有时候会统计前一两个,但是数量一样明显不对。我的主角名单就是单纯输入名字,需要什么别的操作吗?
代码如下
#加载所需的R包
library(ggplot2)
library(data.table)
library(reshape2)
#设置文件路径
setwd("D:/可视化")
#载入主角名单
roles = readLines("主角名单.txt")
roles[1:5]
#载入小说文本数据
yitian = readLines("倚天屠龙记.txt")
#将原小说进行分段
para_head = grep("\s+", yitian, perl = T)
cut_para1 = cbind(para_head[1:(length(para_head)-1)], para_head[-1]-1)
yitian_para = sapply(1:nrow(cut_para1), function(i) paste(yitian[cut_para1[i,1]:cut_para1[i,2]], collapse = ""))
writeLines(yitian_para, "D:/可视化/yitian_para.txt")
#对角色进行统计
roles1 = paste0("(", gsub(" ", ")|(", roles), ")")
roles_l = strsplit(roles, " ") # 总结每个人的不同称呼
#计算每个人物名称的出现次数
role_para = sapply(roles1, grepl, yitian_para)
colnames(role_para) = sapply(roles_l, function(x) x[1])
#将角色出现次数赋值到一个数据框中以便作图
role_count = data.frame(role = factor(colnames(role_para),
levels = colnames(role_para)[order(colSums(role_para), decreasing = T)]),
count = colSums(role_para))
#根据出现次数绘图
ggplot(role_count, aes(x = role, y = count, fill = role)) +
geom_bar(stat = "identity", width = 0.75) +
xlab("Role") +
ylab("Count") +
theme(axis.text=element_text(size=30, angle = 90),
axis.title=element_text(size=20,face="bold"),
axis.title.x = element_text(vjust=-2),
legend.position="none")