【问题标题】:Seperate GeneID seperated by "/" in one column to multiple columns将一列中以“/”分隔的GeneID分隔为多列
【发布时间】:2022-01-01 10:05:01
【问题描述】:

我有一个 data.frame,其中只有一列基因 id 由“/”分隔,请参阅数据。

rows x
row1 5788/3689/5230/8826/302/79026/203068/476
row2 3312/6892/811/3123/3122

如何获得每个单元格中只有一个ID的data.frame,如下面的数据非常感谢。

rows v1 v2 v3 v4 v5 v6 v7 v8
row1 5788 3689 5230 8826 302 79026 203068 476
row2 3312 6892 811 3123 3122

【问题讨论】:

    标签: tidyverse read.csv


    【解决方案1】:

    您可以使用read.table,只需将 x 列用作text 输入向量并同时指定fill=TRUEsep="/"

    read.table(text=dat$x, sep="/", fill =TRUE)
        V1   V2   V3   V4   V5    V6     V7  V8
    1 5788 3689 5230 8826  302 79026 203068 476
    2 3312 6892  811 3123 3122    NA     NA  NA
    

    然后cbind 将其添加到原始数据框或仅行列:

    cbind(rows=dat$rows, read.table(text=dat$x, sep="/", fill =TRUE))
    #------------
      rows   V1   V2   V3   V4   V5    V6     V7  V8
    1 row1 5788 3689 5230 8826  302 79026 203068 476
    2 row2 3312 6892  811 3123 3122    NA     NA  NA
    

    fill= 参数让 read.table 接受每行包含不同数量项目的输入行。 sep= 参数允许使用不同于通常的空格或逗号分隔符的分隔字符。NA 值用于填充较短的输入行。您实际上是在使用单列数据作为要解析的输入文件。

    【讨论】:

    • 这很好用!非常感谢你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2022-12-10
    相关资源
    最近更新 更多