求和数据框hits列时出现“仅支持全数值型变量数据框”错误求助
Google趋势数据求和报错解决
错误原因
你用%>%管道把整个trends_gameplay_over_time数据框传给sum()时出错,核心问题是:这个数据框里除了转成数值的hits列,还有keyword、date这类非数值列,sum()没法对混合类型的数据框直接求和,所以才弹出那串错误提示。
解决方法
方式一:直接对hits列求和(不用管道)
total_trends_gameplay_over_time <- sum(trends_gameplay_over_time$hits)
方式二:用dplyr的summarise()配合管道(适合分组统计)
如果要按每个游戏分组计算总搜索量(正好对应你要画柱状图对比的需求),可以这么写:
# 按游戏关键词分组,计算每款游戏的总搜索量 total_by_game <- trends_gameplay_over_time %>% group_by(keyword) %>% summarise(total_hits = sum(hits)) # 如果要算所有游戏的总搜索量 total_all <- trends_gameplay_over_time %>% summarise(total_hits = sum(hits)) %>% pull(total_hits) # 把结果转成单一数值
柱状图绘制参考
拿到分组求和的total_by_game后,用ggplot画对比柱状图的代码示例:
library(ggplot2) ggplot(total_by_game, aes(x = keyword, y = total_hits)) + geom_col(fill = "#1f77b4") + # 旋转x轴标签避免重叠 theme(axis.text.x = element_text(angle = 45, hjust = 1)) + labs(title = "各游戏'gameplay'关键词总搜索量对比", x = "游戏关键词组合", y = "总搜索量")
内容的提问来源于stack exchange,提问作者sgy0003
相关产品推荐
相关产品推荐

