假设有这样的数据框:
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库中的discretize等函数
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
如果有人知道离散化数据框中列实例的其他方法,将不胜感激。(尤其是离散化,它可以在具有相等实例数的范围内划分数据)