拆分数据框列

Splitting dataframe column

我是生物信息学和 R 的新手。我有一个包含三列的数据框,如下所示:

                          name   X   Y
1                         4052 153 302
2                         7057  80 279
3                         8454 466 266
4                         9978 466 249
5          3397 3398 3399 3400 769 142
6                    1874 1875 723 325

现在,在名称列中,这些是基因 ID,第五行共有 4 个基因 ID。我想将它们分开,将它们作为具有相同 X 和 Y 的单独行添加到数据框中。第 6 行也是如此。所以我希望输出像这样

                      name   X   Y
1                         4052 153 302
2                         7057  80 279
3                         8454 466 266
4                         9978 466 249
5                         3400 769 142
6                         1875 723 325
7                         3399 769 142
8                         3398 769 142
9                         3397 769 142
10                        1874 723 325

使用包 tidyr separate_rows 你有一个非常简单的解决方案:

复制数据:

data <- data.frame(name = c("4052", "7057","8454","9978","3397 3398 3399 3400","1874 1875"),
                   X = c(153,80,466,466,768,723),
                   Y = c(302,279,266,249,142,325), stringsAsFactors = FALSE)

结果:

                 name   X   Y
1                4052 153 302
2                7057  80 279
3                8454 466 266
4                9978 466 249
5 3397 3398 3399 3400 768 142
6           1874 1875 723 325

现在是魔法 :) :

    library(tidyr)

    separate_rows(data, name, convert = TRUE)

结果:

     X   Y name
1  153 302 4052
2   80 279 7057
3  466 266 8454
4  466 249 9978
5  768 142 3397
6  768 142 3398
7  768 142 3399
8  768 142 3400
9  723 325 1874
10 723 325 1875