gpt4 book ai didi

r - 有没有更好的方法在R中创建分位数 "dummies"/factor?

转载 作者:行者123 更新时间:2023-12-04 05:34:44 35 4
gpt4 key购买 nike

我想分配代表分位数的因子。因此,我需要它们是数字。
因此,我编写了以下函数,基本上可以解决我的问题:

qdum <- function(v,q){

qd = quantile(v,1:(q)/q)
v = as.data.frame(v)
v$b = 0
names(v) <- c("a","b")
i=1
for (i in 1:q){

if(i == 1)
v$b[ v$a < qd[1]] = 1
else
v$b[v$a > qd[i-1] & v$a <= qd[i]] = i
}

all = list(qd,v)
return(all)

}

您现在可能会大笑:)。
返回的列表包含一个变量,该变量可用于将每个观察值分配给其相应的分位数。我现在的问题是:是否有更好的方法(更多“本地”或“核心”)来做到这一点?我知道quantcut(来自gtools包),但是至少有了我得到的参数,我最终只得到了那些不方便的(?-至少对我来说)阈值。

任何有助于改善的反馈都将受到赞赏!

最佳答案

对于基数R,请使用分位数来找出拆分,然后剪切以将数字变量转换为离散变量:

qcut <- function(x, n) {
cut(x, quantile(x, seq(0, 1, length = n + 1)), labels = seq_len(n),
include.lowest = TRUE)
}

或者,如果您只想要数字:
qcut2 <- function(x, n) {
findInterval(x, quantile(x, seq(0, 1, length = n + 1)), all.inside = T)
}

关于r - 有没有更好的方法在R中创建分位数 "dummies"/factor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998469/

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