【发布时间】:2019-11-18 19:40:22
【问题描述】:
我有一列,每条记录包含多个行业代码,用逗号分隔,每个都有不同的长度(从 2 到 6 位)。我的数据框中的记录如下所示:
naics <- c("5413, 541410, 11, 23611, 23, 611")
我希望能够根据每个单元中的字符数创建一个新数组。例如,这里我只提取四位数字字符:
naics.four.digit <- unlist(str_extract_all(naics, "[0-9]{4}+"))
naics.four.digit
[1]"5413" "5414" "5414" "5416" "6117"
正如您在上面看到的,我使用了str_extract_all,并且该方法效果很好。但是,一旦我尝试提取 3 位和 2 位字符,此方法就会失效。
naics.three.digit <- unlist(str_extract_all(naics, "[0-9]{3}+"))
naics.three.digit
[1]"541" "541" "410" "236" "611"
这里实际需要的输出是:
"541" "541" "236" "611"
同样,对于两位数的输出,应该是:
"54" "54" "11" "23" "23" "61"
我假设str_extract_all 方法在这里失效,因为每个子字符串都有不同的长度。有解决方法吗?感谢您提供任何帮助或指导。
【问题讨论】:
-
锚定
\b\d{3}\b或拆分,并修剪,然后^\d{3}$或长度 == 3