我想根据两列对数据帧的值进行分类。比方说,我已经得到了以下数据帧:从两个向量创建带状疱疹
my.df <- data.frame(a=c(1:20), b=c(61:80))
,现在我想通过将二维散点图分为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
?
你必须有一些ü被加载的nnamed软件包或附加了一些数据框或...某事。 “z”的类是“数字” –
@DWin我猜它是'lattice'或'latticeExtra',但我不确定。 – AnjaM