我想根据两列对数据框的值进行分类。假设,我有以下数据框:
my.df <- data.frame(a=c(1:20), b=c(61:80))
现在我想通过将 2D 散点图分成 4 个相等的部分,然后在中间覆盖一个由 4 个部分的四分之一组成的矩形,将其细分为 8 个区域。到目前为止,我一直在使用以下乏味的方式:
ar <- range(my.df$a)
br <- range(my.df$b)
aint <- seq(ar[1], ar[2], by=(ar[2]-ar[1])/4)
bint <- seq(br[1], br[2], by=(br[2]-br[1])/4)
my.df$z <- NA
my.df[which(my.df$a < aint[3] & my.df$b < bint[3]),"z"] <- 1
my.df[which(my.df$a < aint[3] & my.df$b >= bint[3]),"z"] <- 2
...
my.df[which(my.df$z == 1 & my.df$a >= aint[2] & my.df$b >= bint[2]),"z"] <- 5
...
我确信必须有一种方法可以以更简洁和更通用的方式来完成,即通过编写通用函数,但我自己正在努力编写一个。
另外,我惊讶地发现,在这一切之后,该列的类z
自动设置为shingle
. 为什么?如何R
“知道”这是一个shingle
?