【问题标题】:Tidyr Separate using regexTidyr 使用正则表达式分隔
【发布时间】:2018-09-01 09:12:39
【问题描述】:

我搜索并搜索了这个并找到了类似的东西,但没有什么完全正确的。希望这个问题没有得到解答。

假设我有一列包含 Y、N,有时还有额外信息

    df<-data.frame(Names=c("Patient1","patient2","Patient3","Patient4","patient5"),Surgery=c("Y","N","Y-this kind of surgery","See note","Y"))

我正在尝试将 Y 或 N 分成一列,并将该列中的所有其他内容分成另一列。

我试过了

    df%>%separate('Surgery',c("Surgery","Notes"), sep=" ")

最后一列有“see”,下一列有“notes”

    df%>%separate('Surgery',c("Surgery","Notes"), sep = '^Y|^N')

变得很奇怪

    df%>%separate('Surgery',c("Surgery","Notes), sep= "^[YN]?")

正确拆分音符,去掉 Y 和 N。

有人知道怎么分开吗?我正在寻找的结果在手术列中只有 Y 或 N,其他任何内容都被推到不同的列。

【问题讨论】:

    标签: r regex tidyr


    【解决方案1】:

    我们可以从tidyr使用extract

    library(tidyr)
    library(dplyr)
    df %>% 
      extract(Surgery, into = c("Surgery", "Notes"), "^([YN]*)[[:punct:]]*(.*)")
    #     Names Surgery                Notes
    #1 Patient1       Y                     
    #2 patient2       N                     
    #3 Patient3       Y this kind of surgery
    #4 Patient4                     See note
    #5 patient5       Y                     
    

    【讨论】:

    • 就是这样!谢谢阿克伦!
    猜你喜欢
    • 2018-01-17
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    相关资源
    最近更新 更多