IT序号网

r之Tidyr 使用正则表达式分开

itcoder 2025年01月19日 编程语言 19 0

我搜了又搜,找到了类似的东西,但没有什么是对的。希望这个问题没有得到解答。

假设我有一个包含 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,其他任何内容都被推到不同的列。

请您参考如下方法:

我们可以使用 extract from tidyr

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                      


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!