R中的正则表达式 - 仅从整数字符串返回单个整数(小于10)(最多100个)

时间:2016-04-13 15:17:44

标签: r grep

我有一个人口年龄的文件,并希望分组年龄范围(例如,10岁以下,35-44岁等)。

虽然使用grep可以正常使用两位数的年龄范围:

X_35_44 <- X[ grep("35|36|37|38|39|40|41|42|43|44", X$Age) , ]

当尝试为10岁以下的任何事物进行子集时,例如:

X_10under <- X[ grep("0|1|2|3|4|5|6|7|8|9|10|", X$Age) , ]

我退回任何年龄,其中1(或31)或2或3,而不是10岁以下的数字。

我如何确保不会发生这种情况?

非常感谢任何帮助!

提前致谢

2 个答案:

答案 0 :(得分:1)

使用不接受失败代码的原则,而是提供更有效的编码解决方案,我将不同意正则表达式策略,建议您改为使用cutfindInterval

X <- data.frame(Ages = sample(1:85, 300, repl=TRUE))
X$age_cat <- cut(X$Age, c(0, 10, 45, 60, 75, Inf), labels=c("under10", 
    '10-44','45-59','60-74','75+'), right=FALSE, include.lowest=TRUE)
head(X)
#=========    
  Ages age_cat
1   65   60-74
2   34   10-44
3   19   10-44
4   79     75+
5    5 under10
6   51   45-59

答案 1 :(得分:1)

的解决方案
  

ifelse()

 as.integer(df$age)
    df$age_cat <- ifelse(df$age < 10, "age_0-10", ifelse(10 < df$age < 20, "age_10-20", "age_20-"))

选择你自己的范围......