这是另一种解决方法,以防有多个列需要替换。
我确信有更好的方法可以做到这一点,但逻辑很清楚:
1)拆分每列的字符串
2) 检查小数点后的字符数并相应替换
char <- data.frame(icd9code1 = c("285.21", "593.9", "285.21" ,"v04.81"),
icd9code2 = c("285.21", "593.9", "285.21" ,"v04.81"),
icd9code3 = c("285.21", "593.9", "285.21" ,"v04.81")
)
for(col in 1:dim(char)[2]){
split_str <- strsplit(char[,col],"\\.")
for(i in 1:nrow(char)){
if(nchar(split_str[[i]][2]) == 1){
char[,col][i] <- paste0(gsub("\\.", "", char[,col][i]),"0")
} else {
char[,col][i] <- paste0(gsub("\\.", "", char[,col][i]))
}
}
}
# > char
# icd9code1 icd9code2 icd9code3
# 1 28521 28521 28521
# 2 59390 59390 59390
# 3 28521 28521 28521
# 4 v0481 v0481 v0481