首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-将所有4位字符更改为前面有0,但保持所有5位值不变

R-将所有4位字符更改为前面有0,但保持所有5位值不变
EN

Stack Overflow用户
提问于 2021-10-07 05:00:42
回答 2查看 28关注 0票数 0

我正在试着在一个县的层面上制作一张全息地图。每个县都有一个唯一的id。我需要将数据集中的ID合并为该县地理信息的ID。数据集的county_id为4位数字,例如1001。地理数据在ID 01001中。所有5位数的county_ids都是正确的。

下面是我的解决方案,但我假设有更好的方法来做到这一点。请教我一种更有效率的方法。

代码语言:javascript
复制
library(tidyverse)
library(urbnmapr)
library(janitor)

broadband <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-05-11/broadband.csv') %>% 
  clean_names()

  broadband_4_digits <- broadband %>% 
  mutate(id_length = str_length(county_id)) %>% 
  filter(id_length == 4) %>% 
  mutate(county_fips = paste0("0",county_id))

broadband_5_digits <- broadband %>% 
  mutate(id_length = str_length(county_id)) %>% 
  filter(id_length == 5) %>% 
  mutate(county_fips = county_id)

broadband <- rbind(broadband_4_digits, broadband_5_digits)

broadband <- broadband %>% 
  right_join(counties, by = "county_fips")
EN

回答 2

Stack Overflow用户

发布于 2021-10-07 05:04:34

我们可以通过一个对sub的调用来处理这个问题

代码语言:javascript
复制
broadband$county_id <- sub("^\\d{4}$", paste0("0", broadbad$county_id), broadbad$county_id)

或者我们可以只使用sprintf

代码语言:javascript
复制
broadband$county_id <- sprintf("%05d", broadband$county_id)
票数 1
EN

Stack Overflow用户

发布于 2021-10-07 05:06:26

您可以使用stringr库中的str_pad函数:

代码语言:javascript
复制
library(stringr)
str_pad(as.character(c(1001,10001)), pad = "0",width = 5)

1 "01001“"10001"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69475692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档