gpt4 book ai didi

r - 按组划分的因素水平

转载 作者:行者123 更新时间:2023-12-04 15:20:16 25 4
gpt4 key购买 nike

我有一个如下所示的 data.table:

library(data.table)
dt <- fread(
"Sex Height
M 180
F 179
F 162
M 181
M 165
M 178
F 172
F 160",
header = TRUE
)

我想将高度分成几组。但是,我想要男女分开的小组。下面的代码给了我三个因子水平,我想要六个。

dt[,height_f := cut(Height, breaks = c(0, 165, 180, 300), right = FALSE), by="Sex"]

> table(dt$height_f)

[0,165) [165,180) [180,300)
2 4 2

感觉应该是很简单的东西,就是不知道怎么写。

期望的输出:

> table(dt$height_f)

M:[0,165) M:[165,180) M:[180,300) F:[0,165) F:[165,180) F:[180,300)
0 3 1 2 2 0

最佳答案

一个data.table解决方案:

dt[, height_cat := cut(Height, breaks = c(0, 165, 180, 300), right = FALSE)]
dt[, height_f :=
factor(
paste(Sex, height_cat, sep = ":"),
levels = dt[, CJ(Sex, height_cat, unique = TRUE)][, paste(Sex, height_cat, sep = ":")]
)]

table(dt$height_f)
# F:[0,165) F:[165,180) F:[180,300) M:[0,165) M:[165,180) M:[180,300)
# 2 2 0 0 2 2

关于r - 按组划分的因素水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63465482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com