Tidyr使用正则表达式分隔

Joe*_*ier 2 regex r tidyr

我进行了搜索,发现了类似的内容,但是没有什么是正确的。希望这还没有得到解决。

可以说我有一列Y,N,有时还有其他信息

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

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

我试过了

    df%>%separate('Surgery',c("Surgery","Notes"), sep=" ")
Run Code Online (Sandbox Code Playgroud)

最终将出现一列,其中包含“ see”,下一列包含“ notes”

    df%>%separate('Surgery',c("Surgery","Notes"), sep = '^Y|^N')
Run Code Online (Sandbox Code Playgroud)

变得奇怪

    df%>%separate('Surgery',c("Surgery","Notes), sep= "^[YN]?")
Run Code Online (Sandbox Code Playgroud)

正确拆分音符,删除Y和N。

有人知道如何分开吗?我要查找的结果将在手术列中仅包含Y或N,而将其他任何内容推送到其他列。

akr*_*run 5

我们可以使用extracttidyr

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                     
Run Code Online (Sandbox Code Playgroud)