regex – 在R中,使用正则表达式匹配多个模式并添加新列到列表
发布时间:2020-12-14 05:49:04 所属栏目:百科 来源:网络整理
导读:我已经找到了很多关于如何使用一个模式和一个替换来匹配和更新整个列表的示例,但我现在正在寻找的是在单个语句或循环中为多个模式和多个替换执行此操作的方法. 例: print(recs) phonenumber amount1 5345091 2002 5386052 2003 5413949 6004 7420155 7005 7
我已经找到了很多关于如何使用一个模式和一个替换来匹配和更新整个列表的示例,但我现在正在寻找的是在单个语句或循环中为多个模式和多个替换执行此操作的方法.
例: > print(recs) phonenumber amount 1 5345091 200 2 5386052 200 3 5413949 600 4 7420155 700 5 7992284 600 我想插入一个名为’service_provider’的新列,其中/ ^ 5 /为Company1,/ ^ 7 /为Company2. 我可以使用以下两行R来做到这一点: recs$service_provider[grepl("^5",recs$phonenumber)]<-"Company1" recs$service_provider[grepl("^7",recs$phonenumber)]<-"Company2" 然后我得到: phonenumber amount service_provider 1 5345091 200 Company1 2 5386052 200 Company1 3 5413949 600 Company1 4 7420155 700 Company2 5 7992284 600 Company2 我想提供一个列表,而不是一组离散的grepl,因此更容易将国家特定信息保存在一个地方,而所有编程逻辑保存在另一个地方. thisPhoneCompanies<-list(c('^5','Company1'),c('^7','Company2')) 在其他语言中,我会在电话公司列表中使用for循环 For every row in thisPhoneCompanies Add service provider to matched entries in recs (such as the grepl statement) end loop 但我明白这不是在R中做到这一点的方法. 解决方法
使用stringi:
library(stringi) recs$service_provider <- stri_replace_all_regex(str = recs$phonenumber,pattern = c('^5.*','^7.*'),replacement = c('Company1','Company2'),vectorize_all = FALSE) recs # phonenumber amount service_provider # 1 5345091 200 Company1 # 2 5386052 200 Company1 # 3 5413949 600 Company1 # 4 7420155 700 Company2 # 5 7992284 600 Company2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- C++ 中strcpy标准写法实例详解
- XML---android解析XML总结(SAX、Pull、Dom三种方式)
- ruby-on-rails – 可以CanCan可以:管理,:除了一种或多种方
- c# – 从Lumia 1020访问气压计数据
- 在React Native项目中使用npm模块
- ruby – 使用不带rails的ActiveRecord连接到现有的Postgres
- ruby-on-rails – 编辑Ruby文件时是否存在用于HTML的Sublim
- Ruby一个衬垫,用于方法undefined或nil
- orale 文档,实例,头文件地址
- 如何压缩缩小图像的大小,然后上传到Parse作为PFFile? (迅速