我试图弄清楚如何根据他们可能包含的术语来识别文档(在这种情况下是推文)。
假设我有这个数据框(df),它由Twitter用户的屏幕名称列表和他们的推文之一组成。
> df
ScreenName tweet
[1,] "Guy A" "one random tweet"
[2,] "Guy B" "another random tweet"
[3,] "Guy C" "a third random piece of text"
好吧,在这个数据框架中,我想得到包含某个术语的推文 - 推文" - 以及提取那些到新数据框(df2) )像这样:
> df2
ScreenName tweet
[1,] "Guy A" "one random tweet"
[2,] "Guy B" "another random tweet"
我认为必须有办法使用tm或qdap包来完成它。但是找不到任何东西,所以最终得到了这个烂摊子;
清理语料库后,我转换为termDocumentMatrix
tdm <- TermDocumentMatrix(corpus, control=list(minWordLength=1))
然后我在术语文档矩阵的哪一行中确定我感兴趣的术语是
t <- as.vector(tdm[term,])
子集 - 如果多次提到术语
t.df <- as.data.frame(t)
t.sub <- subset(t.df, t >= 1)
获取文件编号(行号)
t.n <- as.numeric(rownames(t.sub))
创建新数据框,其中t.tw - 仅包括提及term和t.o的推文 - 其他推文
t.tw <- tw[t.n,]
t.o <- tw[!1:nrow(tw) %in% t.n, ]
感谢您的帮助。
如果上面可怕的代码冒犯了任何有成就的R用户,那就道歉了。
答案 0 :(得分:0)
我会留在此基础并使用grep
函数(如果您已经有data.frame
),并使用以下行:
df[grep("tweet", df$tweet), ]
这与您的数据完全相符:
df <- read.table(text='ScreenName tweet
"Guy A" "one random tweet"
"Guy B" "another random tweet"
"Guy C" "a third random piece of text"', header=TRUE)
df[grep("tweet", df$tweet), ]
## ScreenName tweet
## 1 Guy A one random tweet
## 2 Guy B another random tweet