模式仅匹配R中字符串中的第一个数字

时间:2014-11-24 16:16:49

标签: r grep pattern-matching subset

我有一个数据框,其中包含一系列与账单ID相对应的六位数字。以奇数开头的ID对应于房屋投票,而偶数编号对应于参议院投票。例如,我的变量看起来像这样:

var <- runif(20, 100000, 999999) 

我一直试图找出一个grep()代码,我可以使用subset()命令来分隔以偶数开头的值和以奇数开头的值。有没有人有什么建议?谢谢!

3 个答案:

答案 0 :(得分:6)

您也可以使用is.even <- grepl('^[02468]', var)

答案 1 :(得分:1)

evenNo   <- subset(var, trunc(var*1e-5) %% 2 == 0)

unevenNo <- subset(var, trunc(var*1e-5) %% 2 == 1)

答案 2 :(得分:1)

var <- runif(20, 100000, 999999) 
odds <- substr(var,1,1) %in% c("1", "3", "5", "7", "9")
evens <- substr(var,1,1) %in% c("2", "4", "6", "8")

var[odds]
var[evens]

或者如果是数据框:

df <- data.frame(var = runif(20, 100000, 999999), 
                 outcome = rbinom(20, 1, .5)
                 )

odds <- df[substr(df$var,1,1) %in% c("1", "3", "5", "7", "9"),]
evens <- df[substr(df$var,1,1) %in% c("2", "4", "6", "8"),]