R语言如何从subset子集提取TOTINCP列值计算指定分位数
R语言从筛选后子集提取列计算分位数的实现方法
核心操作逻辑:从已筛选完成的incomeMale数据框中直接提取TOTINCP列生成向量,同时修正quantile()函数的参数写法即可完成需求。
1. 提取指定列为向量
R中提取数据框单列生成向量有以下几种常用方式,任选其一即可:
- 基础写法(无需额外加载包,最常用):
# 用$符号提取指定列 percentIncome <- incomeMale$TOTINCP
- 稳妥索引写法(避免列名含特殊字符时识别错误):
percentIncome <- incomeMale[["TOTINCP"]]
- tidyverse生态写法(已加载dplyr包时可使用):
library(dplyr) percentIncome <- incomeMale %>% pull(TOTINCP)
你之前尝试的
nrow()是用于计算数据框行数的函数,本身不具备提取列的功能,因此无法得到目标结果。上述方法提取的percentIncome完全对应你筛选后的incomeMale子集的TOTINCP数值,不会调用全量数据的内容。
2. 修正分位数计算代码
quantile()函数的第二个参数要求传入概率数值组成的向量,你之前的写法没有把多个概率值放在c()中,运行会报错,正确写法如下:
# 计算0.05、0.10、0.90、0.95四个分位的数值 quantile(percentIncome, probs = c(0.05, 0.10, 0.90, 0.95))
完整可运行的代码示例
male <- subset(dropped, SEXP == 2) female <- subset(dropped, SEXP == 1) incomeMale <- subset(male, TOTINCP > 0) # 提取目标列向量 percentIncome <- incomeMale$TOTINCP # 计算分位数 quantile(percentIncome, probs = c(0.05, 0.10, 0.90, 0.95))
内容的提问来源于stack exchange,提问作者user17067764
相关产品推荐
相关产品推荐

