Tidyr 使用正则表达式分隔

2024-03-28

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

假设我有一列包含 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=" ")

最终将有一列包含“查看”,下一列包含“注释”

    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                     
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tidyr 使用正则表达式分隔 的相关文章

随机推荐