带字母数字的子集范围

时间:2012-11-16 10:44:16

标签: r

我正在尝试在数据列中定义子集(实际上想要生成具有多个不同范围的子集)。

我开始时:

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"), ]

我没有太多编码背景,希望有道理。

2 个答案:

答案 0 :(得分:1)

您可以使用substr()提取子字符串。因此,如果您只想要以“J”开头的条目,您可以使用以下内容:

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

之后,您可能需要使用substr()拆分字符串,然后使用as.numeric()将第二部分从字符串转换为数字变量,以便与数字进行比较。

答案 1 :(得分: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", ]