我对每个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
答案 0 :(得分:3)
我们可以将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
答案 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创建