我有一个来自 35 家不同医院的 ID 变量,因此该变量有各种不同的排列,有时它具有相同的根 ID 号和辅助线号 - 例如 -1、/a、_1 等。
我想删除标点符号以及标点符号后面的任何内容,只留下根 ID 号。
我目前已经设法为每个不同的迭代写出单独的代码行,但我想知道是否有更优雅的方法,以便明年当数据进入时我不需要检查不同的安排?
在别人的问题上,我设法找到了一种方法来删除括号和括号内的所有文本,但我似乎无法弄清楚如何为我的目的操作它
df$patid<- gsub("\\s*\\([^\\)]+\\)","",df$patid)
我尝试了这两个代码,但没有成功
df$patid<- gsub("\\[:punct:]s*$","", df$patid)
df$patid<- gsub("\\[:alnum:]s*$","", df$patid)
我也尝试了该clean
功能,它删除了所有标点符号,但保留了后面的数字/字符,所以不是这样。
我当前代码的示例(并非所有可能的迭代) - 这些确实有效
df$patid<- gsub("\\-1$", "", df$patid)
df$patid<- gsub("\\-2$", "", df$patid)
df$patid<- gsub("\\-3$", "", df$patid)
df$patid<- gsub("\\-a$", "", df$patid)
df$patid<- gsub("\\-A$", "", df$patid)
df$patid<- gsub("\\-b$", "", df$patid)
df$patid<- gsub("\\-B$", "", df$patid)
df$patid<- gsub("\\b", "", df$patid)
df$patid<- gsub("\\/dd", "", df$patid)
不受束缚gsub
,可以接受不同的方法。
身份证号码示例
patid<- c("MB-13-169454", "MB-13-179455", "MB-13-212235.1", "MB-13-212235.2", "MB-13-224683", "570548260-2", "570548260-3", "1458629P-2", "1139093D-2", "8253015N/2", "8253015N/3", "M255858/1", "M255858/2", "8494392Q/2", "9296741B/2", "04152341421/A", "04152341421/B", "04152640475/B", "04152821164/A", "G140381883_1", "G140381883_2", "G140880774_1", "G140880774_2")
如果这个问题已经在别处得到解答,请见谅