问题描述
我需要对推文进行网络分析并获得以下数据框:
# A tibble: 10 x 3
Screen.name party mentions
<chr> <chr> <chr>
1 @_A_K_K_ CDU ""
2 @A_Gloeckner SPD "@MartinSchulz @MartinSchulz @MartinSchulz @ManuelaSchwesig @sigmargab~
3 @a_grotheer SPD "@NSC_CPMR @SouthendRNLI @weserkurier @werderbremen @ribasdiego10 @boe~
4 @A_Schillhane~ GRUENE "@BA_Mitte_Berlin @nytimes @nutellaberliner @Flauschpolizei @A_Schillh~
5 @Achim_P SPD "@spdmilk @Achim_P @jusosowl @Franzmannmarcel @KorkmazGT @c_kampmann @~
6 @AdolfKessel1 CDU "@CDUFraktionRLP @AdolfKessel1"
7 @AfDLindemann AfD "@welt @BVG_Kampagne @SeeroiberJenny @spdde @Afdberlin @spdberlin @See~
8 @AfdMatzke AfD "@APVogt @AfdMatzkeNicht @Leyla_eV @COMPACTMagazin @BjoernHoecke @Birg~
9 @agnieszka_mdb GRUENE "@HelgeBoettcher @agnieszka_mdb @MV_AM @agnieszka_mdb @larscastellucci~
10 @alex_gauland AfD "@RT_Dyck @extra3 @RT_Deutsch @_Herzblatt_ @m_shalva @FraukePetry @Meu~
为了继续我的网络分析,我需要我的 Dataframe 如下所示:
Screen.name mentions party
1 @A_Gloeckner @MartinSchulz SPD
2 @A_Gloeckner @MartinSchulz SPD
3 @A_Gloeckner @MartinSchulz SPD
4 @A_Gloeckner @ManuelaSchwesig SPD
5 @A_Gloeckner @sigmargabriel SPD
6 @a_grotheer @NSC_CPMR SPD
7 @a_grotheer @SouthendRNLI SPD
8 @a_grotheer @weserkurier SPD
9 @a_grotheer @werderbremen SPD
... ...
我尝试熔化或堆叠数据框,但这没有用:
test <- ds %>%
select(Screen.name,mentions)
test <- melt(test,id=c("Screen.name"))
# other approach
test <- stack(ds[,c(1,3)])
这两种方法都给了我错误的输出。 一个额外的好处是在此处包括特定的“派对”。我也愿意接受其他网络分析解决方案,但这种数据框似乎有助于从中创建图表。
预先感谢您的帮助!
解决方法
另一个选择,如果你想坚持 tidyverse,你可以使用 str_split
中的 stringr
将字符串列拆分为出现的字符向量(新列成为列表列),并且然后使用 unnest_longer
取消嵌套此结果。
df %>%
rowwise() %>%
mutate(mentionsplit = str_split(mentions,'\\s')) %>%
unnest_longer(mentionsplit)
,
对我有用的一个解决方案是:
s <- strsplit(ds$mentions,split = " ")
df <- data.frame(Screen.name = rep(ds$Screen.name,sapply(s,length)),mentions = unlist(s))