2012-11-16 26 views
-1

我试图在一列数据中定义一个子集(实际上是想使子集具有几个不同的范围)。使用字母数字的子集范围

我开始有:

subset <- x[(x$y >= "J8500" & x$y < "J8900"), ]

然而,这一切都排除。留下0个观察值。

subset <- x[x$y >= "J8500", ] 

不排除所有以J开始,比8500更低的变量,但它包含与其他字母开始,以及一些变量。该命令我希望只与J.开始

最终变量,我想这样做如下:

subset <- x[(x$y >= "J8500" & x$y < "J8900") | (x$y >= "96400" & x$y <"96599") | (x$y >= "Q0083" & x$y < "Q0085"), ] 

我没有太多的编码的背景下,希望是有意义的事情。

+0

什么是'类(X $ Y)'? – flodel

+0

你可以发布你的数据的例子 –

回答

1

您可以使用substr()提取子。所以,如果你只希望以“J”开头的条目,就可以使用这样的事情:

yy <- c("KK","JK","KJ") 
substr(yy,1,1)=="J" 

之后,您可能需要使用substr()来分割你的字符串,然后从字符串到数字变量转换的第二部分他们使用as.numeric()作为数字可比。

0

是否是x$y的一个因素?如果是这样,那可能会导致错误。

尝试要么转换y以数字

x$y <- as.character(x$y) 

或者在as.character包装调用x $ Y()

subset <- x[as.character(x$y) >= "J8500" & as.character(x$y) < "J8900", ] 
+0

了解它。感谢帮助里卡多。 – user1829276