我搜索并搜索了这个并发现了类似的东西,但没有什么是正确的。希望这没有得到回答。
假设我有一个包含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,而其他任何东西都推到了不同的专栏。
答案 0 :(得分:4)
我们可以使用extract
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