【问题标题】:Split matrix as two array based on the column name根据列名将矩阵拆分为两个数组
【发布时间】:2020-12-29 21:08:46
【问题描述】:

我有一个像这样的矩阵

结构(c(“猫”,“狗”,“狗1”,“牛”,“E02.3”,“E06.7”,“E01.9”, “E01.0”、“Twe.03”、“Twl.06”、“Twl.15”、“Twl.00”、“CA/DO”、“CA”、 "DO", "CA"), .Dim = c(4L, 4L), .Dimnames = list(NULL, c("Name", “Id1”、“Id2”、“类型”)))

我需要拆分为两个数组,只有基于 Type 列值的 Id1 值,如下所示

加拿大

   E02.3
   E06.7
   E01.0

  E02.3
  E01.9

CA/DO 值表示通用名称。

【问题讨论】:

    标签: r


    【解决方案1】:

    使用grep

    cbind(m[grep("CA", m[,"Type"]), "Id1"])
    #      [,1]   
    # [1,] "E02.3"
    # [2,] "E01.9"
    cbind(m[grep("DO", m[,"Type"]), "Id1"])
    #      [,1]   
    # [1,] "E02.3"
    # [2,] "E06.7"
    # [3,] "E01.0"
    

    【讨论】:

      【解决方案2】:

      strsplit 的选项

      with(stack(setNames(strsplit(m1[, "Type"], "/", fixed = TRUE), 
            m1[, "Id1"])), split(as.character(ind), values))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-04
        • 1970-01-01
        相关资源
        最近更新 更多