如何使用 stringr 和 rebus 删除部分字符串?
How do I remove parts of strings using stringr and rebus?
我想使用 stringr
和 rebus
删除数据框中的部分字符串。具体来说,我想删除以 space 开头和数字结尾的部分。
以下是我的数据框:
df<-data.frame(ID = 1:8, Medication = c("FOLIC ACID 5MG TABLET", "RIBAVIRIN 200MG TAB", "ACARBOSE 50MG TABLET",
"AmLODIPine 5MG TABLET", "MAGNESIUM TRISILICATE MIXTURE 200ML",
"RESONIUM 15G/60ML SUSPENSION", "CALCIUM & VIT D TABLET", NA))
我想要的数据框是:
df_new<-data.frame(ID = 1:8, Medication = c("FOLIC ACID", "RIBAVIRIN", "ACARBOSE",
"AmLODIPine", "MAGNESIUM TRISILICATE MIXTURE",
"RESONIUM", "CALCIUM & VIT D TABLET", NA))
我尝试了以下代码,但它只有助于去除药物强度(例如 5MG)而不是测量单位(例如 TABLET):
df %>% mutate(Medication = str_replace(Medication, pattern = SPC %R%
one_or_more(DGT) %R%
one_or_more(WRD) %R%
or(one_or_more(SPC), one_or_more(WRD)),
replace = ""))
我该如何解决这个问题?
transform(df,Medication=sub("\s\d.*","",df$Medication))
ID Medication
1 1 FOLIC ACID
2 2 RIBAVIRIN
3 3 ACARBOSE
4 4 AmLODIPine
5 5 MAGNESIUM TRISILICATE MIXTURE
6 6 RESONIUM
7 7 CALCIUM & VIT D TABLET
8 8 <NA>
我想使用 stringr
和 rebus
删除数据框中的部分字符串。具体来说,我想删除以 space 开头和数字结尾的部分。
以下是我的数据框:
df<-data.frame(ID = 1:8, Medication = c("FOLIC ACID 5MG TABLET", "RIBAVIRIN 200MG TAB", "ACARBOSE 50MG TABLET",
"AmLODIPine 5MG TABLET", "MAGNESIUM TRISILICATE MIXTURE 200ML",
"RESONIUM 15G/60ML SUSPENSION", "CALCIUM & VIT D TABLET", NA))
我想要的数据框是:
df_new<-data.frame(ID = 1:8, Medication = c("FOLIC ACID", "RIBAVIRIN", "ACARBOSE",
"AmLODIPine", "MAGNESIUM TRISILICATE MIXTURE",
"RESONIUM", "CALCIUM & VIT D TABLET", NA))
我尝试了以下代码,但它只有助于去除药物强度(例如 5MG)而不是测量单位(例如 TABLET):
df %>% mutate(Medication = str_replace(Medication, pattern = SPC %R%
one_or_more(DGT) %R%
one_or_more(WRD) %R%
or(one_or_more(SPC), one_or_more(WRD)),
replace = ""))
我该如何解决这个问题?
transform(df,Medication=sub("\s\d.*","",df$Medication))
ID Medication
1 1 FOLIC ACID
2 2 RIBAVIRIN
3 3 ACARBOSE
4 4 AmLODIPine
5 5 MAGNESIUM TRISILICATE MIXTURE
6 6 RESONIUM
7 7 CALCIUM & VIT D TABLET
8 8 <NA>