Address <- c("#20 W Irving ST","@1 East Street",
"%222 Rockfard Avenue","-145 W Locust","& 99 East Locus")
Number <- c("A-1","A-2","A-3","A-4","A-5")
DF <- data.frame(Address,Number)
只需删除紧跟在字符串开头之后的任何重复标点符号或空格字符即可。用正则表达式的话说:
gsub("^[[:punct:][:space:]]+","",DF$Address)
#[1] "20 W Irving ST" "1 East Street" "222 Rockfard Avenue" "145 W Locust"
#[5] "99 East Locus"
这会做你想要的吗? 这假定每个Address
的第一个元素是一个特殊字符。 另请注意,要使此代码正常工作,my.data$Address
的左端必须与 R GUI 的左边缘齐平。 Address
开头不能有任何空字符。
my.data <- read.csv(text = '
Address, Number
#20 W Irving ST, A-1
@1 East Street, A-2
%222 Rockfard Avenue, A-3
-145 W Locust, A-4
& 99 East Locus, A-5
', header = TRUE, stringsAsFactors = FALSE, na.string = 'NA')
my.data
my.data$Address <- substr(my.data$Address, 2, nchar(my.data$Address))
my.data
如果特殊字符可以出现在Address
中的任何位置,并且您想要删除所有特殊字符,则可以尝试此处介绍的功能之一:
用 gsub 替换多个参数
我使用了Theodore Lytras编写的函数,其中包含以下行:
mgsub(c('#','@','%','-','&'), c('','','','',''), my.data$Address)
请注意,使用这两种方法时,地址99 East Locus
现在都以空格开头。
在其第一个元素中具有特殊字符,而某些地址没有,则这可能有效:
my.data <- read.csv(text = '
Address, Number
#20 W Irving ST, A-1
@1 East Street, A-2
222 W Locust, A-4
%222 Rockfard Avenue, A-3
-145 W Locust, A-4
5 East Street, A-2
& 99 East Locus, A-5
', header = TRUE, stringsAsFactors = FALSE, na.string = 'NA')
first.char <- substr(my.data$Address, 1, 1)
my.data$Address <- ifelse(first.char %in% c('#','@','%','-','&'), substr(my.data$Address, 2, nchar(my.data$Address)), my.data$Address)
my.data