我有一个数据框,其中一列有一些单元格,其中有两个值。我需要将这些单元格的两个内容拆分成相同的行,除了所述列的值包含该单元格的两个值之一。
例如:
X.reagent_short_name X.reagent VIS
buffer Excipient 732323 // 2343434
会变成:
X.reagent_short_name X.reagent VIS
buffer Excipient 732323
buffer Excipient 2343434
有没有办法做到这一点并维护数据框的其余部分?
答案 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