已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
4天前关闭。
Improve this question
我想提取单词“管理提供者”后面的人名。该名称可以由名、中间名和姓组成(有时只包含名和姓)。此外,如果人名后面有一个人名头衔,例如:博士我对这个不感兴趣
df <- data.frame("id"= c(12, 19, 20), 'comments' = c('APK COMMENTS FOR APK LOG ID (145991): APK ADMINISTERING PROVIDER: LAURA ABE LE\rAPK ORDERING PROVIDER: EMMA COURTIER (CMS:19928)',
'APK LOG ID (45664705): APK Administering Provider: CHASITY MCDANIELS (1972609856:0000034)\rAPK ORDERING PROVIDER: PAUL LAMAR (19785663:19928476)',
'APK ADMINISTERING PROVIDER: JOHN DOE, R.N. (EPIC:107080)\rAPK ORDERING PROVIDER: OHM LOHAN (EPIC:1987)'))
下面是我尝试解决方案,但显然它是行不通的:
updated.df <- df %>%
mutate(name = sub(".ADMINISTERING PROVIDER:", "", comments, ignore.case = T),
name = trimws(gsub("[(].*$","", comments, ignore.case = T), which = c('both', 'left', 'right')))
2条答案
按热度按时间zsbz8rwp1#
在使用
sub()
之前和之后,您可以删除不相关的信息。后者可能是“,”表示学位,“(“表示ID或特殊字符“\r”。如果遇到不同的情况,您应该将它们添加到第二个sub()
调用的模式参数中。zvms9eto2#
您可以对名称执行
str_extract
操作,使用(?i)
使匹配不区分大小写,并使用正向后查找((?<=...)
)来Assert匹配前面必须有“Administering provider:“。实际的匹配部分以字符类[\\w ]+
表示,该字符类同时包括(且仅包括 *)字母数字字符(\\w
)和空白字符``(请注意,\\s
在此不起作用,因为此字符类包括\r
)