我正在尝试在数据列中定义子集(实际上想要生成具有多个不同范围的子集)。
我开始时:
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 :(得分: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", ]