在R中使用割作为函数的一部分来计算五分位数
我被要求使用R中的“cut”为数据库nhefs中的变量wt71创建四分位数。这是我的密码:在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)
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