2014-11-24 59 views
0

我有一个数据框,其中包含一系列与帐单ID相对应的六位数字的数字。以奇数开头的ID对应于房屋投票,而具有偶数的ID对应于参议院投票。例如,我的变量应该是这样的:仅匹配R中字符串中第一个数字的模式

var <- runif(20, 100000, 999999) 

我卡在试图找出我可以与该亚群()命令用来分离与偶数开始值的grep()代码和那些以奇数开头的。有没有人有什么建议?谢谢!

回答

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

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

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

+0

是的,这会做“呃。很简单。 – 2014-11-24 16:33:03

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"),] 
相关问题