我正在尝试根据给定变量的边界值拆分数据框,计算边界两侧的内容并输出矩阵(最好是数据框)。示例代码如下:
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 行)。