【问题标题】:Split column data, add data in, remerge together拆分列数据,添加数据,重新合并在一起
【发布时间】:2016-09-24 18:58:46
【问题描述】:

我有一个包含两列的文本文件(也许它只是标签?)。其中一列的数据如下所示:TC012950_CDS_3428_4122
第一个数字是 TC#,第二个 CDS,第三个起始位置,第四个结束位置。 另一列有一个像这样的值:11.93631

我有另一个文本文件,其中包含按制表符拆分的染色体信息:

ChLG10 蛋白编码 mRNA 3428 5582 。 - 。 TC012950

我的首要目标是最终将染色体名称 (ChLG10) 合并到第一个文件的列中,如下所示: TC012950_ChLG10_3428_4122
第二列仍包含其原始值。

我尝试将数据放入数组或数据框中,但随后我很难拆分第一列。我不断收到错误说替换有 0 行之类的。因此,我希望也许这里有人可以为我指明正确的方向。

如何使用 _ 将第一列拆分为多列?有没有办法将它们分成标签? 之后,我需要将每一行与其他数据中的对应行进行匹配,这样我就可以将 Chr Location 列放在 TC# 和 CDS 列之间。一旦它位于正确的位置,那么我需要将所有列重新合并在一起并用_分隔。我在想如果我用标签做了什么,那么我会再次用_替换标签吗?欢迎任何建议或帮助。提前非常感谢您!

【问题讨论】:

  • 有无数种方法可以满足您的要求,但我们需要一些数据。

标签: r dataframe merge split


【解决方案1】:

您可以在sub 函数中使用正则表达式将所需的值放入第一列。我只是用两个数据框伪造了你的数据。

dat1<-data.frame(V1='TC012950_CDS_3428_4122', Value='11.93631', stringsAsFactors=F)
print(dat1)
                  V1    Value
1 TC012950_CDS_3428_4122 11.93631

dat2<-data.frame(V1='ChLG10',V2='protein_coding', V3='mRNA')
print(dat2)
      V1             V2   V3 
1 ChLG10 protein_coding mRNA

# loop over the rows in the data.frames
for (i in 1:nrow(dat1)) {
    dat1$V1[i] <- sub('_[A-Za-z0-9]+_',paste('_',dat2$V1[i],'_',sep=''),dat1$V1[i])
}
print(dat1)
                     V1    Value
1 TC012950_ChLG10_3428_4122 11.93631

sub 的参数如下:

  1. 要查找的模式 - 两个之间的一个或多个数字或字母 下划线;在这种情况下,单词字符类 (\\w) 将不起作用,因为它包含下划线
  2. 带有下划线的字符串和来自第二个文件的所需代码 它们之间; paste 只是连接并使用一个空字符串 分隔符
  3. 要修改的目标字符串(第二个文件的第一列)

sub 只会替换第一个匹配项。

【讨论】:

    【解决方案2】:

    将一列拆分为多列的一种方法是通过tidyr::separate。分开后,您可以使用tidyr::unite再次合并它们。

    library(tidyr)
    df = data.frame(A = c("1_2_3","4_5_6"))
    df2 = df%>%separate(col="A",into=c("A","B","C"),sep = "_")
    

    输出:

      A B C
    1 1 2 3
    2 4 5 6
    

    然后您可以按如下任意顺序合并列:

    df2%>%unite(col="new",B,C,A,sep="_")
    

    输出:

        new
    1 2_3_1
    2 5_6_4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 2020-09-14
      • 2020-10-13
      • 2021-04-27
      • 1970-01-01
      相关资源
      最近更新 更多