我有一个带有两列的数据,其中分隔符分隔每个单元格中的条目。 示例数据如下所示:
Proxy
所以我希望这看起来像这样:
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
根据分隔符分隔一列,但我很难将字母表映射到第二列中的相应数字。
帮助我找到一个方法
答案 0 :(得分:4)
仅使用基础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
答案 1 :(得分:3)
我们可以使用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))