【发布时间】:2017-06-30 07:58:34
【问题描述】:
我有一堆推文解析成 CSV 文件(所以我有用户/文本/日期/纬度/经度等字段)
我将这些推文读入 R 中的数据框,并做了一些基本的可视化(如推文频率随时间变化等)。
现在,我想对包含特定关键字的数据框中的推文进行子集化。例如,为了好玩,我希望能够通过提及“希拉里·克林顿”、另一个提及“唐纳德·特朗普”以及另一个提及“德雷克”和“米克·米尔”来获得一个作为子集的数据框。
例如,对于希拉里/特朗普,我希望包含以下短语的推文是相关的:
"Hillary Clinton", "HillaryClinton", "hillary clinton", "hillaryclinton"
特朗普也是如此,如果它包含
"Donald Trump", "DonaldTrump", "donald trump", "donaldtrump"
它可能会抓取最相关的推文(我假设上述过滤条件会提取诸如提及之类的内容 - 例如@HillaryClinton - 和主题标签 - 例如#HillaryClinton)。
因此,我需要使用不同的关键字集对数据框进行子集化,以提取相关的推文。我的猜测可能是使用 grep,但我不确定如何为我的每个用例找出正则表达式。
谁能帮我弄清楚这一点,但如果可能的话,也可以帮助我理解他们是如何制作正则表达式的 :(?我不想每次我需要使用正则表达式时都来这里问...
谢谢!
编辑:按照第一篇文章中的示例,我尝试了:
hillary_df <- subset(tweets_df, grep("[hH]illary ?[Cc]linton", tweets_df$text, value=FALSE))
但这只会返回“文本”列中匹配的特定单元格。我想要初始 df 中的所有行与“text”中的列匹配。
EDIT2:D'oh,需要使用括号来子集。
hillary_df <- tweet_df[grep("[hH]illary ?[Cc]linton", tweets_df$text, value=FALSE), ]
但是生成的 df 有很多值。
【问题讨论】:
-
你想要一个用于唐纳德·特朗普和希拉里·克林顿的通用正则表达式吗?还是每个 2 个单独的正则表达式?
-
我在考虑每个人都分开考虑,因为这样我就可以根据感兴趣的人创建数据框的子集,如果这有意义的话。
-
正则表达式综合教程:regular-expressions.info/tutorial.html。它包括使用 regular expressions in R 的注意事项。