在R、zip_choropleth中对长度/字符不同的邮政编码字符串进行子集设置

在R、zip_choropleth中对长度/字符不同的邮政编码字符串进行子集设置,r,subset,choropleth,R,Subset,Choropleth,我和zip_choropleth一起工作。问题在于,在我的区域向量中,存在一些问题邮政编码 这些问题是: 带有空格的字符串(特别是那些在字符串开头带有空格的字符串) 带有负号的字符串 带字母的字符串 例如: region 00234 78623 3432 -0043 11000 HV 34 88302 我想做的是通过df$region将数据子集为精确长度且仅包含数字的字符串。zip_choropleth在其他方面似乎不起作用 我尝试过通过字符长度进行子集设置 data <- subse

我和zip_choropleth一起工作。问题在于,在我的区域向量中,存在一些问题邮政编码 这些问题是:

  • 带有空格的字符串(特别是那些在字符串开头带有空格的字符串)
  • 带有负号的字符串
  • 带字母的字符串
  • 例如:

    region
    00234
    78623
     3432
    -0043
    11000
    HV 34
    88302
    
    我想做的是通过df$region将数据子集为精确长度且仅包含数字的字符串。zip_choropleth在其他方面似乎不起作用

    我尝试过通过字符长度进行子集设置

    data <- subset(data, nchar(data$region) == 5)
    

    数据使用正则表达式,可以匹配5位数字:

    > subset(df, grepl("\\d{5}", region))
      region
    1  00234
    2  78623
    5  11000
    8  88302
    
    \\d
    表示数字,
    {5}
    表示一行中正好有五个数字


    您还可以使用
    ^\\d{5}$
    将正则表达式锚定到开头/结尾,但是对于您发布的示例数据,这是不必要的。如果有六位或更多数字的邮政编码,或者有五位数字和字母的邮政编码,您可能想试试这个例子。

    使用正则表达式,您可以匹配五位数字:

    > subset(df, grepl("\\d{5}", region))
      region
    1  00234
    2  78623
    5  11000
    8  88302
    
    \\d
    表示数字,
    {5}
    表示一行中正好有五个数字

    您还可以使用
    ^\\d{5}$
    将正则表达式锚定到开头/结尾,但是对于您发布的示例数据,这是不必要的。如果有六位或更多数字的邮政编码,或者有五位数字和字母的邮政编码,你可能想试试这个例子