r - R中的正则表达式和str_detect()
问题描述
我试图在 str_detect() 中使用正则表达式将一些基本的行业 SIC 代码分类为“更高”分类,但我遇到了一些不同的问题。数据示例如下:
SIC_Code Description
8001 Healthcare (INDUSTRY SEGMENT)
3823 Process Control Instruments
3823 Process Control Instruments
3823 Process Control Instruments
9901 Undefined and Other (INDUSTRY SEGMENT)
2899 Chemical Preparations, Nec
上表有各个 SIC 代码及其说明。然后我要做的是将它们分类到它们的父组,该组由代码的前 2 位数字定义。我有另一个看起来像这样的父组表(请注意,我缩短了表以仅包含此示例中的分组,完整的表可以在这里找到https://www.naics.com/business-lists/counts -by-sic-code/#countsBySIC):
Parent Description
20 Manufacturing
.
.
.
39 Manufacturing
80 Services
99 Public Administration
我正在尝试使用 str_detect 在 SIC_Code 列的前 2 位中检测父级,然后在原始表中创建一个包含父级描述的新列。因此,例如所有 3 行 3823 和 2899 的行都将被归类为“制造”,而另外两个将被归类为它们各自的父级。
我试过的代码是:
test <- test %>%
mutate(Parent_Desc = ifelse(str_detect(`SIC_Code`, '^[01-09]'), 'Agriculture, Forestry, and Fishing',
ifelse(str_detect(`SIC_Code`, '^[10-14]'), 'Mining',
ifelse(str_detect(`SIC_Code`, '^[15-17]'), 'Construction',
ifelse(str_detect(`SIC_Code`, '^[20-39]'), 'Manufacturing',
ifelse(str_detect(`SIC_Code`, '^[40-49]'), 'Transportation,
Communications, Electric, Gas, and Sanitary Services',
ifelse(str_detect(`SIC_Code`, '^[50-51]'), 'Wholesale Trade',
ifelse(str_detect(`SIC_Code`, '^[52-59]'), 'Retail Trade',
ifelse(str_detect(`SIC_Code`, '^[60-67]'), 'Finance,
Insurance, and Real Estate',
ifelse(str_detect(`SIC_Code`, '^[70-89]'), 'Services',
ifelse(str_detect(`SIC_Code`, '^[90-99]'), 'Public Administration',
'Other')))))))))))
我有两个不同的问题。当我尝试 ^[01-09] 时,似乎出现了第一个问题。我得到的错误是:
Error in stri_detect_regex(string, pattern, opts_regex = opts(pattern)) :
In a character range [x-y], x is greater than y. (U_REGEX_INVALID_RANGE)
我看到的第二个问题是,如果我尝试 ^[20-39],它会错误地标记某些行。例如,它将 SIC_Code 9901 标记为 TRUE,这意味着它在 20-39 范围内。这显然不是真的。
谁能指出我解决我所看到的问题的方向?我已经尝试使用 SIC_Code 列作为数字和字符,结果是相同的。任何帮助将不胜感激。
解决方案
推荐阅读
- r - R - 移动多行并相应地扩展矩阵
- python - 为什么不同格式的响应会有所不同?
- openssl - openssl 发行者/主题格式差异
- python - 如何使用证书和证书密钥对 url 进行身份验证?
- python - 在 Django 模板的 for 循环中显示谷歌广告?
- salesforce - 带有自定义 Lightning 组件的无效页面 URL
- c# - 连接两个表格以显示汽车品牌
- mongodb - 在使用 Pageable 访问值问题之前调用“Optional#isPresent()”
- reactjs - 从文本框中删除管理密码自动填充
- spss - 如何使用SPSS软件从数据录入到分析