R rpart 创建终端节点 table

R rpart creating terminal nodes table

我想从我的 rpart 输出创建一个 table(见下文)。

table 基本上应该包含以下变量作为数据框: - 终端节点数(以下示例为 4、10、22、23、3) - 终端节点观察 - 终端节点目标 cnt(每个节点中不存在或存在的数量)

但是我想在更改或修剪树时自动执行此操作。

有什么建议吗?

library(rpart)
rp <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
rp

rp$frame$var 告诉你一个节点是否是叶子。有点晦涩的是节点号是rp$frame中的行名。所以你想要的是

rownames(rp$frame)[rp$frame$var == "<leaf>"]
[1] "4"  "10" "22" "23" "3" 

如果你想要 numbers 而不是看起来像数字的字符串,你可以使用

as.numeric(rownames(rp$frame)[rp$frame$var == "<leaf>"])
[1]  4 10 22 23  3