여기서 사용될 패키지는 tidyverse 입니다.
일단 먼저 예제를 위해 ex라는 데이터 프레임을 생성해 줍니다.
> ex <- data.frame(BarcodeA=rep(c(1,'.'),each=4),BarcodeB=rep(c('.',1),each=4),BarcodeC=rep(c(1,'.',1,1),each=1))
> ex
BarcodeD BarcodeA BarcodeB BarcodeC
1 1 1 . 1
2 1 1 . .
3 1 1 . 1
4 1 1 . 1
5 . . 1 1
6 . . 1 .
7 . . 1 1
8 . . 1 1
> ex$Pos <- c("Chr1_100_200","Chr1_200_300","Chr1_300_400","Chr1_400_500","Chr2_100_200","Chr2_200_300","Chr2_300_400","Chr2_400_500")
>
> ex
BarcodeD BarcodeA BarcodeB BarcodeC Pos
1 1 1 . 1 Chr1_100_200
2 1 1 . . Chr1_200_300
3 1 1 . 1 Chr1_300_400
4 1 1 . 1 Chr1_400_500
5 . . 1 1 Chr2_100_200
6 . . 1 . Chr2_200_300
7 . . 1 1 Chr2_300_400
8 . . 1 1 Chr2_400_500
이제 ex라는 예제 데이터가 생성되었으면, 패키지를 다운로드 받아줍니다.
install.packages("devtools")
devtools::install_github("tidyverse/tidyr")
install.packages("here")
library(tidyverse)
library(here)
아래의 명령어를 사용해서 열에 있는 정보를 행으로 전부 옮겨올 수 있습니다.
> NewTable <- ex %>%
+ tidyr::pivot_longer(
+ cols = starts_with("barcode"),
+ values_to = "pos")
> NewTable
# A tibble: 32 x 3
Pos name pos
<chr> <chr> <fct>
1 Chr1_100_200 BarcodeD 1
2 Chr1_100_200 BarcodeA 1
3 Chr1_100_200 BarcodeB .
4 Chr1_100_200 BarcodeC 1
5 Chr1_200_300 BarcodeD 1
6 Chr1_200_300 BarcodeA 1
7 Chr1_200_300 BarcodeB .
8 Chr1_200_300 BarcodeC .
9 Chr1_300_400 BarcodeD 1
10 Chr1_300_400 BarcodeA 1
# ... with 22 more rows