R 将一个数据框拆分为新行,数据框中的数字由添加符号“+”分隔

R 将一个数据框拆分为新行,数据框中的数字由添加符号“+”分隔,r,split,R,Split,很抱歉提出了一个天真的问题,但我有这样一个数据框架: n sp cap 1 1 a 3 2 2 b 3+2+4 3 3 c 2 4 4 d 1+5 我需要将由add sign+分隔的数字拆分为新行,以便获得如下所示的新数据帧: n sp cap 1 1 a 3 2 2 b 3 3 2 b 2 4 2 b 4 5 3 c 2 6 4 d 1 7 4 d 5 我该怎么做?strsplit 提前感谢我们可以使用spl

很抱歉提出了一个天真的问题,但我有这样一个数据框架:

  n sp   cap
1 1  a     3
2 2  b 3+2+4
3 3  c     2
4 4  d   1+5
我需要将由add sign+分隔的数字拆分为新行,以便获得如下所示的新数据帧:

  n sp cap
1 1  a   3
2 2  b   3
3 2  b   2
4 2  b   4
5 3  c   2
6 4  d   1
7 4  d   5
我该怎么做?strsplit

提前感谢

我们可以使用splitstackshape中的cSplit

或者可以在基本R中执行此操作。使用strsplit将cap列的元素拆分为子字符串,这将返回列表lst,根据每个列表元素的长度复制数据集的行,根据新索引对数据集进行子集划分,使用修改后的数据集将lst元素转换为数值、unlist和cbind

lst <- strsplit(as.character(df1$cap), "[+]") 

df2 <- cbind(df1[rep(1:nrow(df1), sapply(lst, length)),1:2],
              cap= unlist(lapply(lst, as.numeric)))

非常感谢,两个都很好
lst <- strsplit(as.character(df1$cap), "[+]") 

df2 <- cbind(df1[rep(1:nrow(df1), sapply(lst, length)),1:2],
              cap= unlist(lapply(lst, as.numeric)))