2 つの列に従ってデータ フレームの値を分類したいと思います。たとえば、次のデータ フレームがあるとします。
my.df <- data.frame(a=c(1:20), b=c(61:80))
そして今、2D 散布図を 4 つの等しい部分に分割し、4 つの部分のそれぞれの 4 分の 1 で構成される中央に長方形を重ねることで、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
ですか?