次のdata.frameがあるとします。ここで、posは位置座標です。私はvalが所定のしきい値tより大きい変数threshを含んでいます。条件に基づいてdata.frameを分割する
0.3 - 1.2,
1.8 - 3.9,
4.5 - 4.5,
5.7 - 5.7
私は脱穀によってdata.frameを分割を考えた後、最初と最後からのposにアクセスしている:私はvalは、上記の例では、すなわち正の場合の領域が座標得ることができますどのように
set.seed(123)
n <- 20
t <- 0
DF <- data.frame(pos = seq(from = 0, by = 0.3, length.out = n),
val = sample(-2:5, size = n, replace = TRUE))
DF$thresh <- DF$val > t
DF
## pos val thresh
## 1 0.0 0 FALSE
## 2 0.3 4 TRUE
## 3 0.6 1 TRUE
## 4 0.9 5 TRUE
## 5 1.2 5 TRUE
## 6 1.5 -2 FALSE
## 7 1.8 2 TRUE
## 8 2.1 5 TRUE
## 9 2.4 2 TRUE
## 10 2.7 1 TRUE
## 11 3.0 5 TRUE
## 12 3.3 1 TRUE
## 13 3.6 3 TRUE
## 14 3.9 2 TRUE
## 15 4.2 -2 FALSE
## 16 4.5 5 TRUE
## 17 4.8 -1 FALSE
## 18 5.1 -2 FALSE
## 19 5.4 0 FALSE
## 20 5.7 5 TRUE
各data.frameリスト要素の1行だけですが、TRUEとFALSEの部分集合をまとめて組み合わせるだけです。 TRUE値に基づいて文字にthresh変数を変換し、FALSE値を破棄する方法はありますか?
split(DF, DF$thresh) # not what I want
## $`FALSE`
## pos val thresh
## 1 0.0 0 FALSE
## 6 1.5 -2 FALSE
## 15 4.2 -2 FALSE
## 17 4.8 -1 FALSE
## 18 5.1 -2 FALSE
## 19 5.4 0 FALSE
##
## $`TRUE`
## pos val thresh
## 2 0.3 4 TRUE
## 3 0.6 1 TRUE
## 4 0.9 5 TRUE
## 5 1.2 5 TRUE
## 7 1.8 2 TRUE
## 8 2.1 5 TRUE
## 9 2.4 2 TRUE
## 10 2.7 1 TRUE
## 11 3.0 5 TRUE
## 12 3.3 1 TRUE
## 13 3.6 3 TRUE
## 14 3.9 2 TRUE
## 16 4.5 5 TRUE
## 20 5.7 5 TRUE
私が試したもう一つの不格好なものでしたcumsum
が、再び、それは偽の行が含まれています
split(DF, cumsum(DF$thresh == 0)) # not what I want but close to it...
## $`1`
## pos val thresh
## 1 0.0 0 FALSE
## 2 0.3 4 TRUE
## 3 0.6 1 TRUE
## 4 0.9 5 TRUE
## 5 1.2 5 TRUE
##
## $`2`
## pos val thresh
## 6 1.5 -2 FALSE
## 7 1.8 2 TRUE
## 8 2.1 5 TRUE
## 9 2.4 2 TRUE
## 10 2.7 1 TRUE
## 11 3.0 5 TRUE
## 12 3.3 1 TRUE
## 13 3.6 3 TRUE
## 14 3.9 2 TRUE
##
## $`3`
## pos val thresh
## 15 4.2 -2 FALSE
## 16 4.5 5 TRUE
##
## $`4`
## pos val thresh
## 17 4.8 -1 FALSE
##
## $`5`
## pos val thresh
## 18 5.1 -2 FALSE
##
## $`6`
## pos val thresh
## 19 5.4 0 FALSE
## 20 5.7 5 TRUE
splitコマンドで問題はありません。とにかく、分割するのではなく、単にDF [DF $ thresh == T、] 'に行かないのはなぜですか? –
@AdamQuekこれは、すべてのTRUE行をまとめて組み合わせることになりますが、正確な '地域'にアクセスしたいからです。あなたの道を行くことは、私に0.3 - 5.7の限界を与えるだろう... – PeterQ