根据字符串重复行并替换新行的值

时间:2016-08-24 13:37:11

标签: r

我遇到了这个问题的困难。

df <- data.frame(number=1:3,name=c('a','b','c'),code=c("5464","5463,5678","45363,6346,6435"))

如果第3列只有一组数字,请不要重复。对于那些有&gt; 1组数字,重复该行并替换为后续数字。

原始输出

  number name    code
   1      a      "5464"
   2      b      "5463,5678"
   3      c      "45363,6346,6435"

期望的输出

number name code
  1     a  "5464"
  2     b  "5463"
  2     b  "5678"
  3     c  "45363"
  3     c  "6346"
  3     c  "6435"

我真的不知道从哪里开始。我尝试使用stringr::str_split_fixed分隔字符串并计算出现次数。但在那之后,我很难根据这些事件重复行并用相应的值替换。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我们可以使用separate_rows

中的tidyr
library(tidyr)
separate_rows(df, code)

cSplit来自splitstackshape

library(splitstackshape)
cSplit(df, "code", ",", "long")