分隔两列的相似定界符

Separating similar delimiter of two columns

我有一个包含两列的数据,每个单元格中的条目用分隔符分隔。 示例数据如下所示:

A|B|C    20|30|40
C|D      20|40
v|M|R|Y  29|23|24|23
C        20

所以我希望它看起来像这样:

A 20    
B 30
C 40
C 20
D 40
V 29
M 23
R 24
Y 23
C 20

我可以使用 cSplit function 根据分隔符分隔一列,但我很难将字母表映射到第二列中的相应数字。 帮我想办法

我们可以使用cSplit。它也适用于多列。使用列索引或列名。

library(splitstackshape)
cSplit(df1, 1:2, "|", "long")
#    V1 V2
# 1:  A 20
# 2:  B 30
# 3:  C 40
# 4:  C 20
# 5:  D 40
# 6:  v 29
# 7:  M 23
# 8:  R 24
# 9:  Y 23
#10:  C 20

数据

df1 <- structure(list(V1 = c("A|B|C", "C|D", "v|M|R|Y", 
"C"), V2 = c("20|30|40", 
"20|40", "29|23|24|23", "20")), .Names = c("V1", "V2"), 
class = "data.frame", row.names = c(NA, -4L))

仅使用基础 R :

# re-create your input data
Input <- 
read.table(text=
'A|B|C 20|30|40
C|D 20|40
v|M|R|Y 29|23|24|23
C 20',stringsAsFactors=FALSE,col.names=c('Col1','Col2'))

# let's split...
DF2 <- 
data.frame(
Col1=unlist(strsplit(Input$Col1,split='|',fixed=TRUE)),
Col2=unlist(strsplit(Input$Col2,split='|',fixed=TRUE)))

> DF2
   Col1 Col2
1     A   20
2     B   30
3     C   40
4     C   20
5     D   40
6     v   29
7     M   23
8     R   24
9     Y   23
10    C   20