【发布时间】:2020-12-20 15:57:48
【问题描述】:
我将在我的数据集中为数千个社区中的每一个找到前 10 个主题标签。数据集中的每个 user_name 都属于一个特定的社区(例如,“a”、“b”、“c”、“d”属于社区 0)。我的数据集样本只有 10 个社区,如下所示:
df <- data.frame(N = c(1,2,3,4,5,6,7,8,9,10),
user_name = c("a","b","c","d","e","f", "g", "h", "i", "j"),
community_id =c(0,0,0,0,1,1,2,2,2,3),
hashtags = c("#illness, #ebola", "#coronavirus, #covid", "#vaccine, #lie", "#flue, #ebola, #usa", "#vaccine", "#flue", "#coronavirus", "#ebola", "#ebola, #vaccine", "#china, #virus") )
要查找每个社区(在以下情况下为社区 0)的前 10 个主题标签,我需要运行以下代码:
#select community 0
df_comm_0 <- df %>%
filter (community == 0)
#remove NAs
df_comm_0 <- na.omit(df_comm_0)
#find top 10 hashtags
df_hashtags_0 <- df_comm_0 %>%
unnest_tokens(hashtag, hashtags, token = "tweets") %>%
count(hashtag, sort = TRUE) %>%
top_n(10)
我知道使用循环可以使我免于运行我的代码约 15,000 次(数据集中的社区数量)。我不熟悉循环,即使搜索了几个小时,也无法编写循环。以下代码是我编写的,它为我提供了整个数据集的主题标签!
x <- (df$community_id)
for (val in x) {
print (
df %>%
unnest_tokens(hashtag, hashtags, token = "tweets") %>%
count(hashtag, sort = TRUE) %>%
top_n(10)
)
}
print()
有没有一种方法可以通过循环遍历所有社区并将每个社区的前 10 个主题标签输出到 1 个文件(或单独的文件)中来运行所有社区的主题标签频率?
非常感谢您的助手。
【问题讨论】:
-
您可以使用
group_by(community),而不是使用filter(community == 0),然后为每个社区执行以下代码。但是,根据数据集的大小,dplyr可能不可行,最好使用data.table