在 R 中子集 length/characters 不同的邮政编码字符串,zip_choropleth
subsetting zip code strings differing length/characters in R, zip_choropleth
我正在与 zip_choropleth 合作。问题源于在我的区域向量中,有一些有问题的邮政编码
这些问题是:
- 其中带有 space 的字符串(尤其是那些在字符串开头带有 space 的字符串)
- 其中包含负号的字符串
- 包含字母的字符串
例如:
region
00234
78623
3432
-0043
11000
HV 34
88302
我想做的是通过 df$region 对数据进行子集化,以获得精确长度且仅包含数字的字符串。 zip_choropleth 否则似乎不起作用。
我试过通过字符长度进行子集化
data <- subset(data, nchar(data$region) == 5)
并通过使用 grep 删除带有“-”或“”的字符。这两种方法似乎都无法正常工作。
使用正则表达式,您可以匹配 5 个数字:
> subset(df, grepl("\d{5}", region))
region
1 00234
2 78623
5 11000
8 88302
\d
表示数字,{5}
表示刚好连续五个。
您还可以使用 ^\d{5}$
将正则表达式锚定到 beginning/end,但对于您发布的示例数据,这不是必需的。您可能想试试这个,例如,如果有包含六位或更多数字的邮政编码,或者包含五位数字和字母的邮政编码。
我正在与 zip_choropleth 合作。问题源于在我的区域向量中,有一些有问题的邮政编码 这些问题是:
- 其中带有 space 的字符串(尤其是那些在字符串开头带有 space 的字符串)
- 其中包含负号的字符串
- 包含字母的字符串
例如:
region
00234
78623
3432
-0043
11000
HV 34
88302
我想做的是通过 df$region 对数据进行子集化,以获得精确长度且仅包含数字的字符串。 zip_choropleth 否则似乎不起作用。
我试过通过字符长度进行子集化
data <- subset(data, nchar(data$region) == 5)
并通过使用 grep 删除带有“-”或“”的字符。这两种方法似乎都无法正常工作。
使用正则表达式,您可以匹配 5 个数字:
> subset(df, grepl("\d{5}", region))
region
1 00234
2 78623
5 11000
8 88302
\d
表示数字,{5}
表示刚好连续五个。
您还可以使用 ^\d{5}$
将正则表达式锚定到 beginning/end,但对于您发布的示例数据,这不是必需的。您可能想试试这个,例如,如果有包含六位或更多数字的邮政编码,或者包含五位数字和字母的邮政编码。