Превращение матрицы присутствия-отсутствия в одну переменную на строку в R - PullRequest
1 голос
/ 18 апреля 2019

У меня есть матрица отсутствия присутствия (состоящая из 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 ]

3 голосов
/ 18 апреля 2019

Мы можем использовать paste0 с do.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
0 голосов
/ 18 апреля 2019

Вот и решение 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

Создано в 2019-04-18 пакетом Представить (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...