我有一个很大的数据框,其中包含地址信息(CUST_ADDRESS_1和CUST_ADDRESS_2)。
CUST_ADDRESS_1应该仅包含街道信息,例如123 Anywhere Drive,而CUST_ADDRESS_2应该仅包含套件信息,例如Suite 23。
我要在Suite信息位于CUST_ADDRESS_1中找到所有实例,并将其放在CUST_ADDRESS_2中。
如果套件信息替换了CUST_ADDRESS_2中的当前数据,我可以,但是我只希望满足条件的数据被替换。
例如:
之前
CUST_ADDRESS_1 CUST_ADDRESS_2
986 Eastern Drive Suite 180
763 Sunset Drive, Suite 2 Attn: Mark Matthews
543 Roanoke Lane
4201 Practice Road, Suite 18
之后
CUST_ADDRESS_1 CUST_ADDRESS_2
986 Eastern Drive Suite 180
763 Sunset Drive Suite 2
543 Roanoke Lane
4201 Practice Road, Suite 18
如果尝试以下操作,但是如果在CUST_ADDRESS_1中找不到Suite信息,则会删除CUST_ADDRESS_2中的数据。
RosterFinal$CUST_ADDRESS_2 <- if_else(grepl("SUITE",RosterFinal$CUST_ADDRESS_1),substr(RosterFinal$CUST_ADDRESS_1,(regexpr("SUITE", RosterFinal$CUST_ADDRESS_1)-1),nchar(RosterFinal$CUST_ADDRESS_1)),if_else(grepl(" STE",RosterFinal$CUST_ADDRESS_1),substr(RosterFinal$CUST_ADDRESS_1,(regexpr(" STE", RosterFinal$CUST_ADDRESS_1)-1),nchar(RosterFinal$CUST_ADDRESS_1)),if_else(grepl(" #",RosterFinal$CUST_ADDRESS_1),substr(RosterFinal$CUST_ADDRESS_1,(regexpr(" #", RosterFinal$CUST_ADDRESS_1)-1),nchar(RosterFinal$CUST_ADDRESS_1)),"")))
答案 0 :(得分:0)
urltools
答案 1 :(得分:0)
这听起来像是标准的R问题。下面的代码绝对不是最优的,但是它应该使您对如何处理此类问题有所了解。
尝试以下
RosterFinal[which(grep(", Suite ",RosterFinal$CUST_ADDRESS_1)==1),'CUST_ADDRESS_2'] <- "Suite "+strsplit(RosterFinal$CUST_ADDRESS_1,"Suite ")[[1]][2]
RosterFinal$CUST_ADDRESS_1 <- strsplit(RosterFinal$CUST_ADDRESS_1,", Suite")[[1]][1]