2016-09-10 11 views
1

です。私はプログラミングには非常に慣れており、私の大学プロジェクトのRプログラミングの助けが必要です。私は各単語の頻度でテーブルを作成したい。例:コードの下URLのすべての単語の行ごとの頻度はR

ID     URLs 
m7fdn    privatkunden:handys, tablets, tarife:vorteile & services:ausland & roaming,privatkunden:hilfe:mehr hilfe:ger,privatkunden:hilfe:service-themen:internet dsl & ltekonfigurieren 
9ufdf    mein website:kontostand & rechnung:meinerechnung:6-monate-übersicht zu ihrer rufnummer,mein website:kontostand & rechnung:meinerechnung:kosten 
09nd7    404 <https://www.website.de/ussa/login/login.ftel?errorcode=2001&name=%20&goto=https%3a%,mein website:login online user:show form:login.ftel/login),mobile,mobile:meinwebsite:kundendaten (mydata.html),mobile:meinwebsite:startseite (index.html),privatkunden:home,privatkunden:meinwebsite:login.ftel 

URLのすべての特殊文字を削除したと周波数を与えている入力ファイルは、CSVファイルのコンマで区切られたようにIDのユーザが訪れたIDおよびwebURLsなどのデータの約70000行を有します文書全体で使われている単語の数。しかし、私は一度に全文書のためにそれを望んでいません。私は行ごとに出力が必要です。私は取得しています

text <- readLines("sample.csv") 
docs <- Corpus(VectorSource(text)) 
inspect(docs) 
toSpace <- content_transformer(function (x , pattern)gsub(pattern, " ", x)) 
docs <- tm_map(docs, toSpace, "/") 
docs <- tm_map(docs, toSpace, "@") 
docs <- tm_map(docs, toSpace, ",") 
docs <- tm_map(docs, toSpace, ";") 
docs <- tm_map(docs, toSpace, "://") 
docs <- tm_map(docs, toSpace, ":") 
docs <- tm_map(docs, toSpace, "<") 
docs <- tm_map(docs, toSpace, ">") 
docs <- tm_map(docs, toSpace, "-") 
docs <- tm_map(docs, toSpace, "_") 
docs <- tm_map(docs, toSpace, "://") 
docs <- tm_map(docs, toSpace, "&") 
docs <- tm_map(docs, toSpace, ")") 
docs <- tm_map(docs, toSpace, "%") 


dtm <- TermDocumentMatrix(docs) 
m <- as.matrix(dtm) 
v <- sort(rowSums(m),decreasing=TRUE) 
d <- data.frame(word = names(v),freq=v) 

出力は以下の通りです:

     word freq 
mein     mein 1451 
website    website 1038 
privatkunden privatkunden 898 
meinwebsite  meinwebsite 479 
rechnung   rechnung 474 

私が欲しいの出力は次のようにする必要があります:上記の表は、ID m7fdnがprivatkunden 4回を持っていることを意味

ID    privatkunden website hilfe rechnung kosten  
m7fdn    4    7   2   7  0 
9ufdf    3    1   9   3  5 
09nd7    5    7   2   8  9 

そのURLと2回のヒルフェアなどで。上記の表はサンプルのためのものであり、正確な単語は数えません。この表は、多数の単語がある限り長くなる可能性があります。この出力を得るために私を助けてください。私はこのテーブルを取得した後、私は機械学習を適用する必要があります。あなたのデータで

1)読書:

text <- readLines("sample.csv") 

text[1]があなたのデータのフル最初の行であることをあなたにベクトルを与え、text[2]

+1

「as.matrix(dtm)」のように必要なものがすでにあるようです。アプローチが文書を列として持つので、必要に応じて転置します。 'asMatrix(DocumentTermMatrix(docs))'の代わりに 'DocumentTermMatrix'を直接使うことができます。 – Jota

+0

こんにちは、私はIDを除外したかったのですが、私の方法は単なる文書として全体のinoutファイルを読み、IDから頻度を追加しました。両方のカラムを分離することができました。ところで、提案に感謝します。 –

答えて

1

は、私がここで言及することの2点があると思いますフルデータの2行目などです。 VectorSourceに必要なものは、URL列のみの列です。 read.tableまたはこの:

require(tidyr) 
text <- readLines("1.txt") 
text <- data.frame(a=text[-1]) %>% separate(a, c("ID", "URLs"), sep=6) 

2)tm であなたのデータを使用して、URLのコーパスを作成します。

dtm <- DocumentTermMatrix(docs) 

docs <- Corpus(VectorSource(text$URLs)) 
names(docs) <- text$ID 

今、あなたはあなたのtm_map変換...あなたは終わりを行います

とあなたが行く:

> as.matrix(dtm[1:3,1:5]) 
     Terms 
Docs  (index.html (mydata.html 404 ã¼bersicht ausland 
    m7fdn   0   0 0   0  1 
    9ufdf   0   0 0   1  0 
    09nd7   1   1 1   0  0 
+0

ありがとうFloo0。出来た。 –

関連する問題