【问题标题】:Separating similar delimiter of two columns分隔两列的相似分隔符
【发布时间】:2016-02-26 12:56:19
【问题描述】:

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

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 根据分隔符分隔一列,但我正在努力将字母表映射到第二列中的相应数字。 帮我想想办法

【问题讨论】:

    标签: r split delimiter


    【解决方案1】:

    仅使用基础 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
    

    【讨论】:

    • 感谢您的替代方法。
    【解决方案2】:

    我们可以使用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))
    

    【讨论】:

    • 感谢您的帮助,我应该更好地阅读 cSplit 的帮助文档。
    猜你喜欢
    • 2020-03-29
    • 2021-02-06
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多