2014-02-17 32 views
2

我還是R的新手,我試圖找到一種更好的方法來構建一個矩陣,其中日期爲行和標記爲填充了1和0的列該標籤適用於該日期的兩列csv文件。從R中的兩列中構建一個零和一個零的矩陣

我有一些現在可以使用的代碼,但我敢打賭,比我放在一起的黑客有更好的方法。

這裏有一個樣本輸入:

# Sample CSV Data 
Date,Tag 
01/01/2014,tag1 
01/01/2014,tag2 
01/01/2014,tag3 
01/01/2014,tag4 
01/01/2014,tag5 
01/01/2014,tag6 
01/01/2014,tag7 
01/02/2014,tag1 
01/02/2014,tag3 
01/02/2014,tag4 
01/02/2014,tag5 
01/02/2014,tag6 
01/03/2014,tag1 
01/03/2014,tag4 
01/03/2014,tag5 
01/03/2014,tag6 
01/03/2014,tag7 
01/04/2014,tag1 
01/04/2014,tag2 
01/04/2014,tag3 
01/04/2014,tag4 
01/04/2014,tag6 
01/04/2014,tag7 
01/04/2014,tag9 
01/05/2014,tag1 
01/05/2014,tag3 
01/05/2014,tag4 
01/05/2014,tag5 
01/05/2014,tag6 

下面是我希望的輸出:

  tag1 tag2 tag3 tag4 tag5 tag6 tag7 tag9 
01/01/2014 1 1 1 1 1 1 1 0 
01/02/2014 1 0 1 1 1 1 0 0 
01/03/2014 1 0 0 1 1 1 1 0 
01/04/2014 1 1 1 1 0 1 1 1 
01/05/2014 1 0 1 1 1 1 0 0 

這是我的工作R代碼裏面:

library(reshape2) 
df <- read.csv("~/Desktop/tags.csv") 
df$Value <- apply(df,1,function(row) 1) 
tagMatrix <- dcast(df, Date~Tag, value.var="Value") 
tagMatrix[is.na(tagMatrix)] <- 0 

什麼是更好的方法從兩列數據框中構建這樣的矩陣?

謝謝!

邁克

回答

3

它只是爲table! :)

> table(myDataFrame) 
      Tag 
Date   tag1 tag2 tag3 tag4 tag5 tag6 tag7 tag9 
    01/01/2014 1 1 1 1 1 1 1 0 
    01/02/2014 1 0 1 1 1 1 0 0 
    01/03/2014 1 0 0 1 1 1 1 0 
    01/04/2014 1 1 1 1 0 1 1 1 
    01/05/2014 1 0 1 1 1 1 0 0 
+0

wait ...「table-factorial」? :-) –

+0

哇,說說我找到一種方法來做一些內置的東西。我不知道爲什麼我之前無法做到這一點。我想我是在三欄的桌子上而不是兩欄的。感謝您的解決方案! –

+1

另外,爲了讓它回到我用作as.data.frame.matrix(myDataFrame)的矩陣數據框。 –

相關問題