在数据框中拆分字符串,并将新字符串分配给数据框中的新行(与toString()相反)

时间:2018-11-13 18:49:31

标签: r

我正在将字符串拆分为数据帧中的单独行,我不确定最佳方法是什么。如果我有一个看起来像这样的数据框:

Gene=c("Gene1","Gene2", "Gene3")
Alt=c("ABC, DEF", "XYZ", "ABC, XYZ")
df=data.frame(Gene, Alt)

目标是将字符串拆分成数据库中的单独行,以便数据框将拆分分配给数据框的下一行,如下所示:

Gene.b=c("Gene1", "Gene1", "Gene2", "Gene3", "Gene3")
Alt.b=c("ABC","DEF","XYZ","ABC","XYZ")
df2=data.frame(Gene.b, Alt.b)

我尝试使用Stringr使用不同的方法,但似乎无法将它们拆分为正确分配给相关基因的方式。我正在寻找一种与toString()函数相反的操作。

1 个答案:

答案 0 :(得分:2)

我们使用separate_rows中的tidyr,并用rename_all更改列名

library(tidyr)
library(dplyr)
separate_rows(df, Alt) %>%
    rename_all(~ paste0(., '.b'))