假设有这样的数据框:
a b c
1. 2 2 3
2. 5 4 4
3. 1 7 4
4. 1 9 4
5. 2 14 0
6. 9 10 6
我想将 b 列中的数据离散化并输入接收方式 范围作为已处理数据框的指定列中的实例的离散值。预测结果如下:
a b c
1. 2 3 3
2. 5 3 4
3. 1 8 4
4. 1 8 4
5. 2 12 0
6. 9 12 6
我遇到了来自 arules 库的离散化等功能
res <- discretize(df$b, method = "frequency", breaks = 3)
我认为可以解决问题,但我发现无法输入意味着回到 df 。
修改
感谢评论中提供的解决方案,我能够在范围之间实现令人满意的原始数据分布。我也在df$b <- iris$Petal.Length
(@alistaire解决方案)上测试了它:
ave(df$b, cut(df$b, quantile(df$b, seq(0, 1, length = 8)),
include.lowest = TRUE), FUN = mean)
以下结果:
hist(df$b)$count
24 20 0 0 22 0 21 21 23 0 19
如果有人知道在数据框中离散列实例的其他方式,我们将不胜感激。 (尤其是可以在具有相等实例数的范围上划分数据的离散化)