r - 从列表创建虚拟变量

标签 r dummy-data

因此,我尝试根据框架的特定列中是否包含特定单词来创建虚拟变量以附加到数据框架。该列将如下所示:

 dumcol = c("good night moon", "good night room", "good morning room", "hello moon")

我会根据每行中包含的单词创建虚拟变量,例如对于第一个,它包含 "good", "night","moon",但不包含 "room", "morning"“你好”

到目前为止,我一直在以一种非常原始的方式进行操作,即创建一个适当大小的 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

关于r - 从列表创建虚拟变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30513029/

相关文章:

R传单情节船方向

r - 如何遍历所有数据集(并确定它们的列数)?

c# - 用于单元测试的虚拟 ObjectList 生成器

javascript - 生成不会改变的虚假数据

r - 如何在R中的data.frame中添加文档?

r - 更改具有两个条件的面板标签

r - 计算 R 中每年没有 N/A 的观察次数

mysql - 如何在 MySQL Workbench 中使用虚拟数据填充现有数据库?

r - 在 R 中创建一个二元指标矩阵( bool 矩阵)

r - 带有四分之一虚拟变量的线性回归