-1

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

我开始:

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

但是,这不包括所有内容。剩下 0 个观察值。

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

确实排除了所有以 a 开头J且低于 8500 的变量,但它也包括一些以其他字母开头的变量。对于该命令,我只想要以 J 开头的变量。

最终,我想做类似以下的事情:

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

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

4

2 回答 2

1

您可以使用substr()提取子字符串。所以如果你只想要以“J”开头的条目,你可以使用这样的东西:

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

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

于 2012-11-16T10:56:14.103 回答
0

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

尝试将 y 转换为数字

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

或将对 x$y 的调用包装在 as.character() 中

subset <- x[as.character(x$y) >= "J8500" & as.character(x$y) < "J8900", ]
于 2012-11-16T20:29:33.533 回答