【问题标题】:convert text into binary matrix in R将文本转换为R中的二进制矩阵
【发布时间】:2017-09-16 02:42:59
【问题描述】:

我有以下文字,内容如下

#------------------
# CONTENTS OF TEXT
#------------------

H01, H04, G02, G06, 
H01, H02, G02, H05, 
G01, H04, H01
G09, G05

我想将此数据转换为二进制矩阵。我希望输出是这样的

H01 H02 H04 H05 G01 G02 G05 G06 G09
1   0   1   0   0   1   0   1   0
1   1   0   1   0   1   0   0   0
1   0   1   0   1   0   0   0   0
0   0   0   0   0   0   1   0   1

请帮忙

【问题讨论】:

  • 请问dput 您的数据:dput(data) 在这种情况下?此外,如果没有某种警告或错误,您应该无法运行 read.csv(file)
  • 我已经对我的问题进行了更改

标签: r csv matrix


【解决方案1】:

你可以这样做:

d <- read.table(header=FALSE, sep='§', stringsAsFactors = FALSE, text=
'H01, H04, G02, G06, 
H01, H02, G02, H05, 
G01, H04, H01
G09, G05')
s <- sort(unique(unlist(strsplit(d$V1, ', *'))))
m <- sapply(s, grepl, x=d$V1, fixed=TRUE)
# > m
#        G01   G02   G05   G06   G09   H01   H02   H04   H05
# [1,] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
# [2,] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
# [3,]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
# [4,] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
m[] <- as.integer(m)
# > m
#      G01 G02 G05 G06 G09 H01 H02 H04 H05
# [1,]   0   1   0   1   0   1   0   1   0
# [2,]   0   1   0   0   0   1   1   0   1
# [3,]   1   0   0   0   0   1   0   1   0
# [4,]   0   0   1   0   1   0   0   0   0

【讨论】:

    【解决方案2】:

    另一个使用@jogo 数据的想法:

    library(dplyr)
    library(tidyr)
    
    d %>%
      mutate(V1 = stringi::stri_extract_all_words(V1), V2 = 1) %>%
      unnest(V1, .id = "id") %>%
      spread(V1, V2, fill = 0)
    

    这给出了:

    #  id G01 G02 G05 G06 G09 H01 H02 H04 H05
    #1  1   0   1   0   1   0   1   0   1   0
    #2  2   0   1   0   0   0   1   1   0   1
    #3  3   1   0   0   0   0   1   0   1   0
    #4  4   0   0   1   0   1   0   0   0   0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2012-12-03
      • 1970-01-01
      • 2022-01-23
      • 2021-09-09
      • 2015-06-01
      • 2020-04-21
      相关资源
      最近更新 更多