将存在不在的矩阵转换为R中每行的一个变量

时间:2019-04-18 14:16:03

标签: r matrix merge

我对每个ID都有一个不在场矩阵(由1和0组成)。它基于标记重获数据。每列代表一个采样日期。作为数据框,它看起来像这样(前3行):

    ID        X X.1 X.2 X.3 X.4 X.5  Sex
    2014-001  0   0   1   0   1   0  F
    2014-002  0   0   1   1   0   0  M
    2014-003  0   1   0   0   1   1  F

我需要一个看起来像这样的最终产品:

        ch     Sex
    1   001010 F
    2   001100 M
    3   010011 F

2 个答案:

答案 0 :(得分:3)

我们可以将paste0do.call一起使用,以粘贴感兴趣的列的行,并将cbind粘贴到最后一列

nm1 <- grep("^X(\\.\\d+)*", names(df1), value = TRUE)
cbind(ch = do.call(paste0, df1[nm1]), df1["Sex"])
#      ch Sex
#1 001010   F
#2 001100   M
#3 010011   F

答案 1 :(得分:0)

这也是tidyverse解决方案:

library(tidyverse)

df <- read.table(
  h = T,
  text = "ID        X X.1 X.2 X.3 X.4 X.5  Sex
          2014-001  0   0   1   0   1   0  F
          2014-002  0   0   1   1   0   0  M
          2014-003  0   1   0   0   1   1  F"
)

df %>% 
  unite(ch, X:X.5, sep = "") %>% 
  select(-ID)
#>       ch Sex
#> 1 001010   F
#> 2 001100   M
#> 3 010011   F

reprex package(v0.2.1)于2019-04-18创建