特定の変数の境界値に基づいてデータフレームを分割し、境界の両側で何かを計算して、行列(できればデータフレーム)を出力しようとしています。以下のコード例:
set.seed(1)
tdata <- data.frame(a1=rnorm(100, mean=5, sd=2), a2=rep(0:1, length.out=100))
tall <- sapply(1:9, function(x) {
d <- split(tdata, tdata$a1 <= x)
sapply(d, function (y) {
1 - max(table(y$a2)/nrow(y))
})
})
私の結果:
> allErr
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
FALSE 0.4949495 0.4895833 0.4943820 0.4933333 0.4444444 0.4411765 0.3333333
TRUE 0.0000000 0.2500000 0.4545455 0.4800000 0.4347826 0.4696970 0.4705882
[,8] [,9]
FALSE 0.5 0.5
TRUE 0.5 0.5
私の連続変数はtdata$a1
であり、からの境界値を使用してデータフレームを毎回2に分割し、分割の各部分に対して1:9
計算を実行してa2
、それを返したいと考えています。
ここでの私の質問:エレガンス(plyr
解決策を検討しましたが、最初のsapplyの使用を避けられません)およびさらに重要なことに、私が気付いていない可能性のある他のR関数の正しい使用法の観点からこれを行うための最良の方法は何ですか?また、私のソリューションは、現在持っているデータフレーム(約10000行)よりもはるかに大きなデータフレームではうまくスケーリングできないのではないかと心配しています。