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

Split dataframe rows into two copies of itself

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

例如:

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

会变成:

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

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

有了tidyr包,你可以使用separate_rows():

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

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

基础 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