【发布时间】:2020-06-08 10:07:39
【问题描述】:
我有一个如下所示的数据框:
Pos HG00096 HG00097 HG00099 ......and so on(about 2000 variables)
230765867 0|0 0|0 0|1 ......
230765926 1|0 0|1 0|0 ......
230765941 0|0 1|1 0|0 .......
等等大约4000个观察结果
mydfexample <- tribble(
~Pos,~HG00096,~HG00097,~HG00099,
"230765867","0|0","0|0","0|1",
"230765926","1|0","0|1","0|0",
"230765941","0|0","1|1","0|0",
)
我的目标是将每一列分成两列 (sep = "|") 并将它们连接为每一列的一个字符串,如下所示。
HG00096.1 010.....
HG000096.2 000.....
HG00097.1 001....
HG00097.2 011......
HG00099 .1 000......
HG00099.2 100.......
到目前为止,我能够将它们分开并将其放入两个单独的列中(感谢 SO)。以下是代码:
f= function(x){
mydfexample %>%
dplyr::select(Pos,x) %>%
separate(x, paste0(x,c(".1",".2")))
}
names(mydfexample[2:4]) %>%
map(f) %>%
reduce(left_join, by="Pos")
接下来,我的想法是做一个转置,联合起来得到最终的信息。我试图关注How to transpose a dataframe in tidyverse?,但这会改变最终数据框中列的顺序。我想保持0和1的顺序。现在它按位置排序,并希望保持相同的顺序。非常感谢任何指针或帮助。
【问题讨论】: