在R中使用割作为函数的一部分来计算五分位数

在R中使用割作为函数的一部分来计算五分位数,r,function,quantile,R,Function,Quantile,我被要求使用R中的“cut”为数据库nhefs中的变量wt71创建四分位数。这是我的密码: apply_quintiles <-function(x) { cut(x, breaks =c(quantile(nhefs$wt71,probs=seq(0,1, by=0.25))), labels=c(25, 50, 75, 100),include.lowest=TRUE) } nhefs$quintiles<-sapply(nhefs$wt71,apply_quintiles)

我被要求使用R中的“cut”为数据库nhefs中的变量wt71创建四分位数。这是我的密码:

 apply_quintiles <-function(x) {
cut(x, breaks =c(quantile(nhefs$wt71,probs=seq(0,1, by=0.25))), labels=c(25, 50, 75, 100),include.lowest=TRUE)
}
nhefs$quintiles<-sapply(nhefs$wt71,apply_quintiles)
head(mean_weights)
table(nhefs$quintiles)

apply_五分位数创建的
表显示了该四分位数内的行数(N)。这不同于由指示第一个或第三个四分位数或中位数阈值的
summary
计算的
wt71
值。(注:正如@Gregor所指出的,这些是四分位数而不是五分位数。)

为了举例说明,我更改了标签以澄清产生的四分位数:

set.seed(1)

nhefs <- data.frame(
  wt71 =  round(runif(100, min=1, max=100), 0)
)

apply_quintiles <-function(x) {
  cut(x, breaks =c(quantile(nhefs$wt71,probs=seq(0,1, by=0.25))), labels=c("0-25", "25-50", "50-75", "75-100"),include.lowest=TRUE)
}

nhefs$quintiles<-sapply(nhefs$wt71,apply_quintiles)

table(nhefs$quintiles)

  0-25  25-50  50-75 75-100 
    25     25     26     24 
这些值对应于第一个四分位数、中值和第三个四分位数的阈值。这些阈值确实与
wt71的值相关。例如,
wt71
值30将小于第一个四分位级别

现在来看一下nhefs

head(nhefs)

  wt71 quintiles
1   27      0-25
2   38     25-50
3   58     50-75
4   91    75-100
5   21      0-25
6   90    75-100
请注意,对于不同的
wt71
值,它们被分配到不同的四分位数。27的
wt71
处于最低四分位数(0-25),因为该值小于第一个四分位数32.75的阈值


希望这有帮助

您能否提供预期的输出,作为R对象或文本表(非图像)以及输入数据的可复制示例(粘贴输出
dput(输入数据)
)?请注意,您正在计算四分位数。要做五分位数,您需要
probs=seq(0,1,by=0.2)
。(你的语言不一致,所以不清楚你到底想要什么…)
head(nhefs)

  wt71 quintiles
1   27      0-25
2   38     25-50
3   58     50-75
4   91    75-100
5   21      0-25
6   90    75-100