R 如何分割这些成分,然后在括号内使用不同数量的缩写
以下是我的数据的摘录: “草甘膦(HBC)、阿特拉津(HBC)、亚甲基钾(FUN、HBC、INS、NEM)、二氯丙烯(HBC、NEM)、异丙甲草胺(-s)(HBC)、百菌清(FUN)、氯化苦(NEM)、淀粉液化芽孢杆菌(FUN)、2,4-d(HBC、PGR)” 我希望此示例如下所示: 如果有帮助的话,我知道所有可能的缩写(HBC、FUN等) 这就是我迄今为止所尝试的R 如何分割这些成分,然后在括号内使用不同数量的缩写,r,regex,string,strsplit,R,Regex,String,Strsplit,以下是我的数据的摘录: “草甘膦(HBC)、阿特拉津(HBC)、亚甲基钾(FUN、HBC、INS、NEM)、二氯丙烯(HBC、NEM)、异丙甲草胺(-s)(HBC)、百菌清(FUN)、氯化苦(NEM)、淀粉液化芽孢杆菌(FUN)、2,4-d(HBC、PGR)” 我希望此示例如下所示: 如果有帮助的话,我知道所有可能的缩写(HBC、FUN等) 这就是我迄今为止所尝试的 str = "glyphosate (HBC), atrazine (HBC), dichloropropene (HBC, N
str = "glyphosate (HBC), atrazine (HBC), dichloropropene (HBC, NEM), metolachlor(-s) (HBC), chlorothalonil (FUN), chloropicrin (NEM), bacillus amyloliquifacien (FUN), 2,4-d (HBC, PGR), pendimethalin (HBC), metam (FUN, HBC, INS, NEM), acetochlor (HBC), metribuzin (HBC), dicamba (HBC), phorate (INS), chlorpyrifos (ACA, INS), flutolanil (FUN), paraquat (HBC), propazine (HBC), dimethenamid(-p) (HBC, FUN), bromoxynil (HBC)"
vec = unlist(unlist(strsplit(str, " ()")))
vec_clean = gsub('^\\(|\\),|\\,|)$', '', vec)
matrix(vec_clean,nrow = 24,ncol = 2, byrow = TRUE)
这给了我:
> matrix(vec_clean,nrow = 24,ncol = 2, byrow = TRUE)
[,1] [,2]
[1,] "glyphosate" "HBC"
[2,] "atrazine" "HBC"
[3,] "dichloropropene" "HBC"
[4,] "NEM" "metolachlor(-s"
[5,] "HBC" "chlorothalonil"
[6,] "FUN" "chloropicrin"
[7,] "NEM" "bacillus"
[8,] "amyloliquifacien" "FUN"
[9,] "24-d" "HBC"
[10,] "PGR" "pendimethalin"
[11,] "HBC" "metam"
[12,] "FUN" "HBC"
[13,] "INS" "NEM"
[14,] "acetochlor" "HBC"
[15,] "metribuzin" "HBC"
[16,] "dicamba" "HBC"
[17,] "phorate" "INS"
[18,] "chlorpyrifos" "ACA"
[19,] "INS" "flutolanil"
[20,] "FUN" "paraquat"
[21,] "HBC" "propazine"
[22,] "HBC" "dimethenamid(-p"
[23,] "HBC" "FUN"
[24,] "bromoxynil" "HBC"
我在str split“()”中使用的论点是由于反复试验,我不明白为什么在某种程度上会起作用。我尝试使用我在此修改的示例删除前导和尾随“(“and“,)”:
因此,这是一个开始,但当一个成分有更多的缩写,例如(乐趣,HBC等),它也分裂那里。它还删除了2,4-d中的“,”以及不应该删除的两个删节之间的“,”。它从dimethenamid(-p)中删除了尾随的“)”,它也不应该这样做 使用
stringr::str\u match\u all
stringr::str_match_all(str, ",?\\s?(.*?)\\s\\((.*?)\\),")[[1]][, -1]
# [,1] [,2]
# [1,] "glyphosate" "HBC"
# [2,] "atrazine" "HBC"
# [3,] "dichloropropene" "HBC, NEM"
# [4,] "metolachlor(-s)" "HBC"
# [5,] "chlorothalonil" "FUN"
# [6,] "chloropicrin" "NEM"
# [7,] "bacillus amyloliquifacien" "FUN"
# [8,] "2,4-d" "HBC, PGR"
# [9,] "pendimethalin" "HBC"
#[10,] "metam" "FUN, HBC, INS, NEM"
#[11,] "acetochlor" "HBC"
#[12,] "metribuzin" "HBC"
#[13,] "dicamba" "HBC"
#[14,] "phorate" "INS"
#[15,] "chlorpyrifos" "ACA, INS"
#[16,] "flutolanil" "FUN"
#[17,] "paraquat" "HBC"
#[18,] "propazine" "HBC"
#[19,] "dimethenamid(-p)" "HBC, FUN"
我们从每个值中提取两部分。第一部分以一个可选的逗号和空格开始(第二个值之后),直到遇到一个开始圆括号(
(
),第二部分是开始圆括号和结束圆括号内的所有内容。使用stringr::str_match_all
stringr::str_match_all(str, ",?\\s?(.*?)\\s\\((.*?)\\),")[[1]][, -1]
# [,1] [,2]
# [1,] "glyphosate" "HBC"
# [2,] "atrazine" "HBC"
# [3,] "dichloropropene" "HBC, NEM"
# [4,] "metolachlor(-s)" "HBC"
# [5,] "chlorothalonil" "FUN"
# [6,] "chloropicrin" "NEM"
# [7,] "bacillus amyloliquifacien" "FUN"
# [8,] "2,4-d" "HBC, PGR"
# [9,] "pendimethalin" "HBC"
#[10,] "metam" "FUN, HBC, INS, NEM"
#[11,] "acetochlor" "HBC"
#[12,] "metribuzin" "HBC"
#[13,] "dicamba" "HBC"
#[14,] "phorate" "INS"
#[15,] "chlorpyrifos" "ACA, INS"
#[16,] "flutolanil" "FUN"
#[17,] "paraquat" "HBC"
#[18,] "propazine" "HBC"
#[19,] "dimethenamid(-p)" "HBC, FUN"
我们从每个值中提取两部分。第一部分以可选的逗号和空格开始(对于第二个值,从第二个值开始),直到遇到开始圆括号(
(
),第二部分是开始圆括号和结束圆括号内的所有内容。下面是一个基本的R解决方案:
str=“草甘膦(HBC)、阿特拉津(HBC)、二氯丙烯(HBC、NEM)、异丙甲草胺(HBC)、百菌清(FUN)、氯化苦(NEM)、淀粉液化芽孢杆菌(FUN)、2,4-d(HBC、PGR)、二甲戊灵(HBC)、异丙草胺(FUN、HBC、INS、NEM)、乙草胺(HBC)、甲溴嗪(HBC)、二甲草胺(HBC)、甲拌磷(INS)、毒死蜱(ACA、INS)、氟虫腈(FUN)百草枯(HBC)、丙嗪(HBC)、二甲胺(-p)(HBC,FUN)、溴苯腈(HBC)”
out[1,]草甘膦“HBC”
#>[2,]阿特拉津“HBC”
#>[3,]二氯丙烯“HBC,NEM”
#>[4,]“异丙甲草胺(-s)”“HBC”
#>[5,]百菌清“乐趣”
#>[6,]氯化苦“NEM”
#>[7,]淀粉液化芽孢杆菌“乐趣”
#>[8,]2,4-d“HBC,PGR”
#>[9,]二甲戊灵“HBC”
#>[10,]“metam”“乐趣、HBC、INS、NEM”
#>[11,]乙草胺“HBC”
#>[12,]metribuzin“HBC”
#>[13,]麦草畏“HBC”
#>[14,]“磷酸”INS
#>[15,]毒死蜱“ACA,INS”
#>[16,]“氟妥拉尼”“乐趣”
#>[17,]百草枯“HBC”
#>[18,]丙嗪“HBC”
#>[19,]“二甲胺(-p)”“HBC,乐趣”
#>[20,]溴苯腈“HBC”
由(v0.3.0)于2020年4月5日创建。以下是基本R解决方案:
str=“草甘膦(HBC)、阿特拉津(HBC)、二氯丙烯(HBC、NEM)、异丙甲草胺(HBC)、百菌清(FUN)、氯化苦(NEM)、淀粉液化芽孢杆菌(FUN)、2,4-d(HBC、PGR)、二甲戊灵(HBC)、异丙草胺(FUN、HBC、INS、NEM)、乙草胺(HBC)、甲溴嗪(HBC)、二甲草胺(HBC)、甲拌磷(INS)、毒死蜱(ACA、INS)、氟虫腈(FUN)百草枯(HBC)、丙嗪(HBC)、二甲胺(-p)(HBC,FUN)、溴苯腈(HBC)”
out[1,]草甘膦“HBC”
#>[2,]阿特拉津“HBC”
#>[3,]二氯丙烯“HBC,NEM”
#>[4,]“异丙甲草胺(-s)”“HBC”
#>[5,]百菌清“乐趣”
#>[6,]氯化苦“NEM”
#>[7,]淀粉液化芽孢杆菌“乐趣”
#>[8,]2,4-d“HBC,PGR”
#>[9,]二甲戊灵“HBC”
#>[10,]“metam”“乐趣、HBC、INS、NEM”
#>[11,]乙草胺“HBC”
#>[12,]metribuzin“HBC”
#>[13,]麦草畏“HBC”
#>[14,]“磷酸”INS
#>[15,]毒死蜱“ACA,INS”
#>[16,]“氟妥拉尼”“乐趣”
#>[17,]百草枯“HBC”
#>[18,]丙嗪“HBC”
#>[19,]“二甲胺(-p)”“HBC,乐趣”
#>[20,]溴苯腈“HBC”
由(v0.3.0)于2020-04-05创建的“二氯丙烯(HBC,NEM)”从所需表格的图像中丢失。“二氯丙烯(HBC,NEM)”从所需表格的图像中丢失。