微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pivot_longer:GVCF 列成行

如何解决Pivot_longer:GVCF 列成行

下午好,

在浏览堆栈溢出并没有找到我的特定问题的解决方案后,我决定询问社区,希望这对其他人也有帮助。

我有联合 VCF 格式的遗传数据。我试图将多个列转换为两个分别封装样本名称和基因型信息的列。这是一个相当大的数据集,所以我正在尝试设置一个允许我这样做的函数或 for 循环。

这是我正在使用的数据格式的模型

df <- structure(list(Chromosome = c("chr 1","chr 2","chr 3","chr 4","chr 5","chr 6"),position = c("123444","364829","098090","123134","123234","34234"),reference = c("C","G","C,GC","ATTA","GATTACA","TC,GCT"
),alt = c("AC,G","CG.GT","A,*","GA,CGT","TA,GTA","AAC"),AD_GT_SAMP_1 = c('0,0|./.|','148,136|0/1|',132|0/1|','48,236|1/1|','0,0|./.|'),V5 = c('zw42dx28.cd14.20180120.ef','zw42dx28.cd14.20180120.ef','zw42dx28.cd14.20180120.ef'),AD_GT_SAMP_2 = c('0,10|./.|','428,'10,'20,V7 = c('xs82d2x8.bulk.20180121.ef','xs82d2x8.bulk.20180121.ef','xs82d2x8.bulk.20180121.ef'))) %>%
as.data.frame()

1:4 列对于所有样本都是恒定的。我希望第 5 列将所有样本名称当前存储在 (data[,c(5,7,9,...)]) 中,第 6 列将它们的基因型信息当前存储在 (data[,c(6,8,10,...)])

我尝试过使用 pivot_longer 并且当我尝试时它没有给我错误

pivot_longer(data = mock_gvcf,cols = c(V5,V7,etc...),names_to = '.value')

数据集将列一直向右移动(例如,在具有 80 列的数据集中,其中 v5-v7-v9-v11... 保存样本的名称,列的内容不会改变,但会移至v80 列的右侧)。

编辑:下面的注释有助于为模拟数据有效地整理数据。不过好像是真实数据集中的名称格式有问题。

真实数据的samp_id格式为:(sampid.celltype.collectiondate.stageofcollection) sampid 有 4 个不同的名字 celltype有4种不同的类型 收集日期有 6 个时间点 和收集阶段有3个时间点

任何建议将不胜感激。提前致谢。

解决方法

pivot_longer(df,-(1:4),names_to = c('.value','grp'),names_pattern = '(.*)_(\\d+)')

# A tibble: 12 x 7
   Chromosome position reference alt    grp   AD_GT_SAMP   sAMP      
   <chr>      <chr>    <chr>     <chr>  <chr> <chr>        <chr>     
 1 chr 1      123444   C         AC,G   1     0,0|./.|     SAMP1_NAME
 2 chr 1      123444   C         AC,G   2     0,10|./.|    SAMP2_NAME
 3 chr 2      364829   G         CG.GT  1     148,136|0/1| SAMP1_NAME
 4 chr 2      364829   G         CG.GT  2     148,136|0/1| SAMP2_NAME
 5 chr 3      098090   C,GC      A,*    1     148,132|0/1| SAMP1_NAME
 6 chr 3      098090   C,*    2     148,132|0/1| SAMP2_NAME
 7 chr 4      123134   ATTA      GA,CGT 1     48,236|1/1|  SAMP1_NAME
 8 chr 4      123134   ATTA      GA,CGT 2     428,236|1/1| SAMP2_NAME
 9 chr 5      123234   GATTACA   TA,GTA 1     0,0|./.|     SAMP1_NAME
10 chr 5      123234   GATTACA   TA,GTA 2     10,0|./.|    SAMP2_NAME
11 chr 6      34234    TC,GCT    AAC    1     0,0|./.|     SAMP1_NAME
12 chr 6      34234    TC,GCT    AAC    2     20,0|./.|    SAMP2_NAME

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?