R语言如何拆分推文数据框的@提及列以适配网络分析需求
实现代码
你需要将mentions列中以空格分隔的多个账号拆分为独立行,使用tidyverse的separate_rows()可以一步完成需求,同时保留对应Screen.name和party字段:
# 加载依赖包 library(tidyverse) # 转换处理 ds_transformed <- ds %>% # 过滤无提及内容的空行 filter(mentions != "") %>% # 按空格拆分mentions为多行 separate_rows(mentions, sep = "\\s+")
输出结果完全匹配你需要的格式,重复提及的账号也会对应生成重复行,可直接用于后续网络分析:比如用igraph包构建关系网络时,可将Screen.name作为源节点、mentions作为目标节点,party作为节点属性做分党派的传播、社群相关分析。
如果需要用基础R实现,可参考如下代码:
ds_transformed <- do.call(rbind, lapply(seq(nrow(ds)), function(idx) { mention_list <- strsplit(trimws(ds$mentions[idx]), "\\s+")[[1]] if (length(mention_list) == 0 || all(mention_list == "")) return(NULL) data.frame( Screen.name = ds$Screen.name[idx], party = ds$party[idx], mentions = mention_list, stringsAsFactors = FALSE ) }))
内容的提问来源于stack exchange,提问作者Maxl Gemeinderat
相关产品推荐
相关产品推荐

