You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何提取男性子样本TOTINCP值计算对应分位数

错误根因

  • 你写的incomeMale <- c(male, TOTINCP)存在两处问题:
    1. male是数据框结构,用c()拼接会把整个数据框的所有列都拉平为列表,不会单独提取TOTINCP列
    2. 你之前调用了attach(data1),导致直接写TOTINCP时调用的是全数据集的收入列,而非男性子样本的收入列
  • quantile()函数的概率参数需要传入一个数值向量,你当前的写法会把0.1、0.9等错误传给na.rm等后续参数,无法得到你要的四个分位结果

可行解决方案

1. Base R写法

library("tidyverse")
data1 <- read_csv("1986Census.csv", col_names = TRUE)

# 筛选符合条件的样本
dropped <- subset(data1, 26 <= AGEP & AGEP <= 64 & TOTINCP >= 0 & MARSTP != 1 & MARSTP != 5)
# 提取男性子样本的TOTINCP向量
incomeMale <- subset(dropped, SEXP == 2)$TOTINCP
# 计算指定分位值,na.rm=TRUE可自动跳过缺失值
quantile(incomeMale, probs = c(0.05, 0.1, 0.9, 0.95), na.rm = TRUE)

输出结果的四个值依次对应*后5%、后10%、前10%、前5%*的分位值。

2. Tidyverse管道写法(更简洁,避免中间变量混淆)

library(tidyverse)
read_csv("1986Census.csv", col_names = TRUE) %>%
  # 逐层筛选符合要求的男性样本
  filter(AGEP >= 26, AGEP <=64,
         TOTINCP >= 0,
         !MARSTP %in% c(1,5),
         SEXP == 2) %>%
  # 单独提取TOTINCP列作为向量
  pull(TOTINCP) %>%
  # 计算分位数
  quantile(probs = c(0.05, 0.1, 0.9, 0.95), na.rm = TRUE)

内容的提问来源于stack exchange,提问作者user17067764

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:36:03