【发布时间】:2019-04-18 21:02:52
【问题描述】:
我有一个数据框,其中有一列由字符串 (project_skills) 组成,表示某个工作 (job_id) 提供的技能。我想为每个工作拆分这个字符串以获得一个工作提供的技能向量,然后创建一个文档术语矩阵来表示某个工作提供哪些技能(在所有可能的技能中)。
我有以下数据框:
job_id project_skills
107182 CSS,HTML,Joomla,PHP
108169 XTCommerce,Magento,Prestashop,VirtueMart,osCommerce
112969 Google Search Console,Google Analytics,Google Webmaster Central,C++,Java,C#
114660 Marketing,Email Marketing
118686 PHP
结果应该看起来像这样(基本上是一个带有逗号分隔短语的文档术语矩阵:
project_skills
job_id CSS HTML PHP Google Search Console Google Analytics Java ...
107182 1 0 0 ...
108169 0 0 0 0 0
112969 0 0 0 1 1 ...
114660 0 0 0 ...
118686 0 0 1 ...
我尝试了以下方法:
df <- data.frame(job_id = c(107182, 108169, 112969, 114660, 118686), project_skills = c("CSS,HTML,Joomla,PHP", "XTCommerce,Magento,Prestashop,VirtueMart,osCommerce", "Google Search Console,Google Analytics,Google Webmaster Central,C++,Java,C#", "Marketing,Email Marketing", "PHP"))
corpus <- Corpus(VectorSource(df$project_skills))
corpus <- tm_map(corpus, function(x) {
PlainTextDocument(
strsplit(x,"\\,")[[1]],
id=ID(x)
)
})
inspect(corpus)
dtm <- DocumentTermMatrix(corpus)
as.matrix(dtm)
但不幸的是,这会拆分所有单词而不是逗号(例如,Google Search Console 应被视为 DTM 中的一个术语)。
【问题讨论】:
标签: r string dataframe tm strsplit