首页 > 解决方案 > 在R中的列中分隔数字字符

问题描述

在 r 我有一个显示年龄范围的列,如下所示:

Age <- c(1524, 2534, 3544, 4554, 5564, 65)

因此,对于 15 至 24 岁、15-34 岁……以及 65 岁以上的人来说

我希望我的专栏中的年龄用“-”分隔。最后一个年龄说 65<"。看起来像:

Age <- c(15-24, 25-34, 35-44, 45-54, 55-64, 65<)

谢谢

标签: r

解决方案


我们可以使用从开始 ( ) 开始sub捕获前两个字符 ( ),然后是接下来的两个字符,在捕获组的反向引用之间插入替换。然后使用到没有with的元素(..)^-ifelsepaste-<

Age <- sub("^(..)(..)$", "\\1-\\2", Age)
ifelse(grepl("-", Age), Age, paste0(Age, "<"))
#[1] "15-24" "25-34" "35-44" "45-54" "55-64" "65<"  

或者可以在一个步骤中使用substrandsub

  1. 提取前两个字符 -substr(Age, 1, 2)
  2. 提取接下来的两个 -substr(Age, 3, 4)
  3. 然后,paste他们和一个-介于两者之间
  4. 对于那些只有两个字符的元素,第二个substr调用返回"",因此我们-在字符串的末尾
  5. -末尾的($- 字符串结尾的正则表达式元字符)替换为<
sub("-$", "<", paste0(substr(Age, 1, 2), "-", substr(Age, 3, 4)))
[1] "15-24" "25-34" "35-44" "45-54" "55-64" "65<"  

推荐阅读