1
我使用哈德利的reshape2
包內的acast
功能,扁平的數據集(從SQL Server查詢)轉變成一個術語文檔矩陣,像這樣:加快acast()調用創建矩陣
## Load packages
require("reshape2")
require("plyr")
require("RODBC")
require("lsa")
## Get flattened term-frequency data:
Terms <- read.csv(url("https://dl.dropboxusercontent.com/u/263772/flat_dtm.csv"), header = T)
names(Terms) <- c("id", "Term", "Frequency")
system.time(terms.mtrx <- acast(Terms, id ~ Term, sum, value.var = 'Frequency')) # re-cast to a term-document matrix
的我碰到的問題是terms.mtrx
的尺寸非常大...... 40,000行x 17,000列,矩陣非常稀疏。
> head(Terms)
id Term Frequency
1 resume-108008-34530496 enterprise data 2
2 resume-108008-34530496 enterprise data warehouse 2
3 resume-108008-34530496 etl 2
4 resume-108008-34530496 facility 1
5 resume-108008-34530496 faculty 1
6 resume-108008-34530496 financial 1
>
> dim(Terms)
[1] 6139039 3
有沒有更快的(少內存密集型)方式來產生這個矩陣?
如果你真的可以創建一個[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),它會有幫助,因爲我們不'無法訪問您的輸入。即使假數據也沒問題。你是否想從'tm'類中創建一個合適的'TermDocumenMatrix',或者你只是想創建自己的數組。也許使用'xtabs(...,sparse = TRUE)'會比'acast'更好的選擇來創建一個合適的'sparseMatrix()'對象。 – MrFlick 2014-09-30 23:59:23
@MrFlick我已經更新了原始文件,並在我的公共Dropbox文件夾中鏈接到一個.csv文件。這應該是可重複的。 – Ray 2014-10-01 00:04:31