我有一个.csv
数据框,其中的一列是ZIP
代码。该ZIP
代码是一个因素。这是一个例子:
Country<- c("US","US","US","CAN","CAN")
ZIP<- C(00210,01210,65483.0,H3P,H3P3C)
data<- data.frame(Country,ZIP)
我做了以下工作,但输出不是我想要的:
data$ZIP<-round(as.numeric(as.character(data$ZIP)), 0)
虽然它去掉了小数,但现在的邮政编码00210
,01210
成为210
和1210
。另外,的zip
代码已CANADA
成为NA
。我想将zip
密码保留为5
数字并保留的zip
密码CANADA
。
我怎样才能做到这一点?
谢谢。
尝试这个
data$ZIP <- sub("\\.\\d+$", "", data$ZIP)
# Country ZIP
# 1 US 00210
# 2 US 01210
# 3 US 65483
# 4 CAN H3P
# 5 CAN H3P3C
在帮助页面上,典型的用法sub
是
sub(pattern, replacement, x)
x是一个字符向量,在其中寻求匹配...
在我们的例子中x
,将是ZIP
列(列的值ZIP
是特定的)。
模式是("\\.\\d+$")
:
\\.
符合 dot
\\d+
匹配一个或多个数字字符
$
匹配输入字符串的末尾。
替换模式为""
。它用一个空字符串替换从点匹配开始到结尾的数字字符。
例如
sub("\\.\\d+$", "", 21358.222)
# "21358"
希望能有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句