首页 > 解决方案 > 如何循环 R 中的行以根据相邻列中的相应值拆分列?

问题描述

我有两列作为字符的数据框:

col1              col2
"Chharodi"       "Jasmine Green-1, Chharodi,Ravalvas, Chharodi,Thakorvas, Chharodi"
"Lapkaman"       "Belavyu Farm, Lapakaman,Ravalvas, Lapakaman,Vankarvas, Lapakaman"
"Ognaj"          "Vav Valo Vas, Oganaj,Marutinadan Society, Oganaj,Ravalvas,Ognaj"

我想用这个输出拆分 col2(根据 col1 中的相邻值拆分文本):

col3                  col4                    col5          col_contd..
Jasmine Green-1      Ravalvas                Thakorvas
Belavyu Farm         Ravalvas                Vankarvas
Vav Valo Vas         Marutinadan Society     Ravalvas

当我使用这个时得到一个“非字符参数”的错误

for (i in 1:nrow(df)){
  df1<-strsplit(df, df$col2[i],split = df$col1[i])
}

另外,如何将行绑定在一起以创建最终的 df?

标签: r

解决方案


一个基础 R 解决方案,

i1 <- max(lengths(strsplit(as.character(df$col2), df$col1)))
do.call(rbind, lapply(strsplit(as.character(df$col2), df$col1), 
                                    function(i){length(i) <- i1; i}))


#     [,1] [,2]  [,3] 
#[1,] "l " " m " " n "
#[2,] "k " " g " " m "
#[3,] "e " " f " NA   

推荐阅读