啊啊啊啊啊吖

2018-11-07   阅读量: 689

数据分析师 R语言

关于合成新数据库的问题

扫码加入数据分析学习群

R语言怎么把数据框每列分割成两列,然后合并成新的数据框?

比如数据如下:

kk <- matrix(c("CG","CC","GG","GG","CG","CG","CC","CG","CG","CC","GG","GG"),3,4)

kk <- as.data.frame(kk)

把每一列的字符串分割成两个字符,然后各自成为新的列,再进行合并。

library(stringr)

split <- function(temp){

  return(str_split_fixed(temp, "", 2))

}

jj <- matrix(0,nrow(kk), ncol(kk))

for(i in 1:ncol(kk)){

  temp <- split(kk[,i])

  jj <- cbind(jj, temp)

}

jj <- jj[,-c(1:4)]

矩阵cbind循环越往后越慢,而且基因型数据通常又很大。

用list存储,再解成matrix,速度就快得多,试一下。

nrows <- 2000

kk <- matrix(rep(c("CG","CC","GG","GG","CG","CG","CC","CG","CG","CC","GG","GG"), 10000),nrows, byrow=T) %>%

  as.data.frame

jj <- list()

for(i in 1:ncol(kk)){

  jj[[i]] <- kk[,i] %>% str_split_fixed("", 2)

}

jj <- jj %>% unlist %>%

  matrix(nrow=nrows, byrow=T) %>%

  data.frame(stringsAsFactors=F)

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 3 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子