【问题标题】:How to create binary relation matrix with R?如何用R创建二元关系矩阵?
【发布时间】:2017-10-28 04:52:29
【问题描述】:

我有一个看起来像这样的data.frame。例如:

A;a 
B;a 
C;b 
D;c
A;b
A;d
C;c 

第一个 pos = key ,第二个 pos = value。如果键; value ,则为 1 ,否则为 0;

我想从数据中创建二进制矩阵,我想要这个表格格式:

0 a b c d
A 1 1 0 1  
B 1 0 0 0
C 0 1 1 0
D 0 0 0 1

我可以创建矩阵,但不能创建二进制矩阵,因为有些行是重复的 我的代码:

 mydb2 <- structure(list(Key = c("A","B","C","D","E","A","A"), 
                   Value = c("b","c","e","a","f","g","g")), 
              .Names = c("", ""), class = "data.frame", 
              row.names = c(NA, -6L))
table(mydb2)

出来

我该如何解决?

【问题讨论】:

  • 你的问题要花点功夫,你采取了哪些步骤? SO 不是“问,然后给我答案”的常见问题解答。你得试试。 stackoverflow.com/help/dont-ask
  • 我同意,你试过什么?
  • 我想要这个表格格式 ;试试?table
  • table(dt$V1,dt$V2) ?
  • 感谢更新。两个选项:1.使用逻辑运算将>1值转换为1:tab = table(mydb2) ; (tab &gt; 0 ) + 0,2.在表格table(unique(mydb2))之前删除重复行@

标签: r matrix


【解决方案1】:

正如@Wen 在 cmets 中指出的,从文件中读取数据(不包含标题行):

> t = read.table('test.txt',sep=';')
> t
  V1 V2
1  A  a
2  B  a
3  C  b
4  D  c
5  A  b
6  A  d
7  C  c

并使用table命令并通过将所有值大于1的元素更新为值1将其转换为二进制矩阵:

> t2 <- table(t$V1,t$V2)
> t2[t2 > 1] <- 1
> t2

    a b c d
  A 1 1 0 1
  B 1 0 0 0
  C 0 1 1 0
  D 0 0 1 0

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2017-03-27
    • 2012-05-27
    • 1970-01-01
    • 2019-10-05
    相关资源
    最近更新 更多