我想基於給定變量的邊界值分割數據幀,計算邊界兩側的某些內容並輸出矩陣(最好是數據幀)。示例代碼波紋管:在連續變量邊界處分割數據幀並在兩邊執行計算
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
,我想每次使用的邊界值從1:9
分割數據幀中2,上a2
執行計算對於拆分的每個部分,並將其返回。
我的問題在這裏:什麼是最好的方式來做到這一點在優雅(看着plyr
解決方案,但不能避免使用第一sapply),更重要的是正確使用其他R功能,我可能不知道的。我也擔心我的解決方案不會比我目前擁有的(〜10000行)大得多的數據幀進行擴展。
+1該指數矢量 – diliop 2011-05-29 21:48:13