从R中的两列构建一个1和0的矩阵

时间:2014-02-17 18:52:20

标签: r

我还是R的新手,我正在尝试找到一种更好的方法来构建一个矩阵,其中日期为行和标签,如果标签从两列csv应用于该日期,则填充为1和0的列文件。

我有一些现在有效的代码,但我认为这比我整理的黑客更好。

以下是一个示例输入:

# 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

从两列数据框构建这样的矩阵有什么更好的方法?

谢谢!

麦克

1 个答案:

答案 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