如何统计rtweet数据集字符变量中多个字符串的出现次数
统计推特数据中指定提及用户名的出现次数
嘿,我来帮你搞定这个统计需求!首先得明确:rtweet返回的mentions_screen_name字段通常是列表列——也就是每条推文对应的元素可能是一个包含多个用户名的向量(比如一条推文@了A和B,那这个位置的值就是c("A", "B"))。所以我们得先把这个列表展开,再统计目标用户名的出现次数。
下面给你两种实用的方法:
方法一:基础R实现
不需要额外安装包,用原生函数就能搞定:
# 第一步:把列表列展开成单个用户名组成的向量 all_mentions <- unlist(x$mentions_screen_name) # 第二步:统计所有用户名的出现次数 total_counts <- table(all_mentions) # 第三步:提取'A'、'B'、'C'的计数,没出现的补0 target_counts <- c( A = ifelse(is.na(total_counts["A"]), 0, total_counts["A"]), B = ifelse(is.na(total_counts["B"]), 0, total_counts["B"]), C = ifelse(is.na(total_counts["C"]), 0, total_counts["C"]) ) # 查看结果 print(target_counts)
方法二:tidyverse风格(更简洁)
如果你习惯用tidyverse生态的工具,代码会更直观:
library(tidyverse) # 展开列表列 → 筛选目标用户名 → 统计次数 → 补全未出现的项 x %>% unnest(mentions_screen_name) %>% filter(mentions_screen_name %in% c("A", "B", "C")) %>% count(mentions_screen_name, name = "occurrences") %>% complete(mentions_screen_name = c("A", "B", "C"), fill = list(occurrences = 0))
小提示
如果你的x$mentions_screen_name是普通字符向量(每条推文只@了一个人),那可以跳过unlist或unnest步骤,直接用table(x$mentions_screen_name)或者count(x, mentions_screen_name)来统计。
内容的提问来源于stack exchange,提问作者spindoctor
相关产品推荐
相关产品推荐

