-1

我想将输入数据中的第 4 行中的每一列拆分为将第一列分隔到另一列下方,如专家输出所示

输入

 cytoband   11qE2         1qC1.1      13qD2.1
    q value     1.16          1.53        1.13
    wide      11:119210       1:50490     13:107190
    genes    Aatk,Actg1,Alyref Tin,Ern    Alk,Nf12

预期产出

cytoband    11qE2         1qC1.1      13qD2.1
q value     1.16          1.53        1.13
wide      11:119210       1:50490     13:107190
genes    Aatk             Tin         Alk
         Actg1            Ern         Nf12
         Alyref           
4

1 回答 1

1

我认为你想要的是 tidyr 包中的 separate_rows 。

文档中有一个示例:

 df <- data.frame(
   x = 1:3,
   y = c("a", "d,e,f", "g,h"),
   z = c("1", "2,3,4", "5,6"),
   stringsAsFactors = FALSE
 )
separate_rows(df, y, z, convert = TRUE)

如果您使用标准 eval 版本的separate_rows_,您可以使用列名,这样可以得到如下信息:

names <- colnames(df)
for(col in names) {
 df <- separate_rows_(df, col, sep = ",", convert = FALSE)
}

不完美,因为它会导致值重复,但也许可以开始?

于 2017-05-03T20:36:13.240 回答