将数据帧行拆分为自身的两个副本

时间:2016-10-03 18:01:49

标签: r bioinformatics

我有一个数据框,其中一列有一些单元格,其中有两个值。我需要将这些单元格的两个内容拆分成相同的行,除了所述列的值包含该单元格的两个值之一。

例如:

X.reagent_short_name       X.reagent            VIS
   buffer                    Excipient    732323 // 2343434

会变成:

X.reagent_short_name       X.reagent             VIS
   buffer                    Excipient         732323 
   buffer                    Excipient         2343434

有没有办法做到这一点并维护数据框的其余部分?

2 个答案:

答案 0 :(得分:2)

使用tidyr包,您可以使用separate_rows()

library(tidyr)
df %>% separate_rows(VIS)

#  X.reagent_short_name X.reagent     VIS
#1               buffer Excipient  732323
#2               buffer Excipient 2343434

答案 1 :(得分:0)

基础R很难:

as.data.frame(
rbind(t(apply(df, 1, function(x) c(x[1:2], unlist(strsplit(x['VIS'], split='//'))[1]))),
rbind(t(apply(df, 1, function(x) c(x[1:2], unlist(strsplit(x['VIS'], split='//'))[2]))))))

X.reagent_short_name X.reagent    VIS1
1               buffer Excipient  732323
2               buffer Excipient 2343434