因此,我尝试根据框架的特定列是否包含特定单词来创建虚拟变量以附加到数据框架。该列看起来像这样:
dumcol = c("good night moon", "good night room", "good morning room", "hello moon")
我将根据每行中包含的单词创建虚拟变量,例如对于第一个,它包含"good", "night",
and "moon"
, 但不是"room", "morning"
or "hello"
.
到目前为止,我一直在以一种非常原始的方式进行处理,即创建一个适当大小的 0 值矩阵,然后使用 for 循环,如下所示:
result=matrix(ncol=6,nrow=4)
wordlist=unique(unlist(strsplit(dumcal, " ")))
for (i in 1:6)
{ result[grep(wordlist[i], dumcol),i] = 1 }
或类似的东西。我猜想有一种更快/更高效的方法来做到这一点。有什么建议吗?
你可以尝试:
library(tm)
myCorpus <- Corpus(VectorSource(dumcol))
myTDM <- TermDocumentMatrix(myCorpus, control = list(minWordLength = 1))
as.matrix(myTDM)
这使:
# Docs
#Terms 1 2 3 4
# good 1 1 1 0
# hello 0 0 0 1
# moon 1 0 0 1
# morning 0 0 1 0
# night 1 1 0 0
# room 0 1 1 0
如果您想要列中的虚拟变量,您可以使用DocumentTermMatrix
反而:
# Terms
#Docs good hello moon morning night room
# 1 1 0 1 0 1 0
# 2 1 0 0 0 1 1
# 3 1 0 0 1 0 1
# 4 0 1 1 0 0 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)