搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  post.xlsx
资料下载链接地址: https://bbs.pinggu.org/a-3453783.html
附件大小:
88.91 KB   举报本内容
目前匹配的代码可以正常运行,但就是效率比较低,请问有啥优化的建议?
代码如下:
  1. #------------------------------导入包-------------------------------------------
  2. library(stringr)
  3. library(openxlsx)
  4. library(tidyverse)
  5. #-----------------------------筛选美国数据--------------------------------------
  6. data_us <- read.xlsx("path/data_us.xlsx") #导入数据集
  7. post <- read.xlsx("path/post.xlsx") #导入邮编数据
  8. testFuc <- function(data_us,post){
  9. data_us$state <- data_us$city <- NA #新增州和城市变量
  10. N <- NROW(post) #各城市邮编区间数量
  11. for (i in 1:N){
  12. templist <- post[i,5] #提取邮编
  13. if (nchar(templist) <= 13){#判断邮编区间长度是否小于等于13
  14. startPost <- str_sub(templist,1,5) #提取起始邮编
  15. endPost <- str_sub(templist,-5,-1) #提取末尾邮编
  16. IdPost <- as.numeric(startPost):as.numeric(endPost) #按起始到末尾将邮编排列成向量
  17. for (j in IdPost){
  18. if(j < 10000){j <- paste0(0,j)} #处理0开头的邮编
  19. IndexPost <- grepl(j,data_us$ap_addr) #在地址中匹配邮编
  20. data_us$city[IndexPost] <- post[i,6]#利用邮编填写邮编对应的城市
  21. data_us$state[IndexPost] <- post[i,2] #利用邮编填写邮编对应的州
  22. }
  23. }else{ #判断邮编区间长度大于13的情况
  24. startPost1 <- str_sub(templist,1,5)
  25. endPost1 <- str_sub(templist,9,13)
  26. startPost2 <- str_sub(templist,16,20)
  27. endPost2 <- str_sub(templist,-5,-1)
  28. IdPost <- c(as.numeric(startPost1):as.numeric(endPost1),as.numeric(startPost2):as.numeric(endPost2))
  29. for(j in IdPost){
  30. IndexPost <- grepl(j,data_us$ap_addr)
  31. data_us$city[IndexPost] <- post[i,6]
  32. data_us$state[IndexPost] <- post[i,2]
  33. }
  34. }
  35. }
  36. return(data_us) #返回数据表
  37. }

  38. newdata < testFuc(data_us,post) #调取函数
复制代码




    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

GMT+8, 2026-1-11 04:52