我正在使用R中的一组推文(非常原创,我知道),并希望在每个@符号之后和每个#之后提取文本并将它们放入单独的变量中。例如:
这是使用#twitter的测试推文。 @johnsmith @joesmith。
理想情况下,我希望在具有twitter johnsmith joesmith等的数据框架中创建新变量。
目前我正在使用 data $ at< - str_match(data $ tweet_text,“\ s @ \ w +”) data $ hash< - str_match(data $ tweet_text,“\ s#\ w +”)
这显然让我第一次出现在一个新变量中。有什么建议吗?
答案 0 :(得分:2)
strsplit
和grep
将有效:
x <-strsplit("This is a test tweet using #twitter. @johnsmith @joesmith."," ")
grep("#|@",unlist(x), value=TRUE)
#[1] "#twitter." "@johnsmith" "@joesmith."
如果你只想保留单词,不要#,@或。:
out <-grep("#|@",unlist(x), value=TRUE)
gsub("#|@|\\.","",out)
[1] "twitter" "johnsmith" "joesmith"
更新将结果放入list
:
my_list <-NULL
x <-strsplit("This is a test tweet using #twitter. @johnsmith @joesmith."," ")
my_list$hash <-c(my_list$hash,gsub("#|@|\\.","",grep("#",unlist(x), value=TRUE)))
my_list$at <-c(my_list$at,gsub("#|@|\\.","",grep("@",unlist(x), value=TRUE)))
x <-strsplit("2nd tweet using #second. @jillsmith @joansmith."," ")
my_list$hash <-c(my_list$hash,gsub("#|@|\\.","",grep("#",unlist(x), value=TRUE)))
my_list$at <-c(my_list$at,gsub("#|@|\\.","",grep("@",unlist(x), value=TRUE)))
my_list
$hash
[1] "twitter" "second"
$at
[1] "johnsmith" "joesmith" "jillsmith" "joansmith"