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

使用R语言按Eco_Status分组ID并生成对应数据框与向量

解决方案

需求1:生成以poor/average/rich/billionaire为列的分组数据框

Python 实现

使用pandas的透视功能实现,先统一类别顺序再展开:

import pandas as pd

# 强制指定Eco_Status的类别及顺序,避免遗漏或顺序混乱
df['Eco_Status'] = pd.Categorical(df['Eco_Status'], categories=['poor', 'average', 'rich', 'billionaire'])

# 为每个分组内的ID添加序号,用于透视时对齐行
df['group_seq'] = df.groupby('Eco_Status').cumcount()

# 透视生成目标数据框
target_df = df.pivot(index='group_seq', columns='Eco_Status', values='ID').reset_index(drop=True)
# 重命名列(可选,确保列名完全匹配需求)
target_df.columns = ['poor', 'average', 'rich', 'billionaire']

R 实现

借助tidyverse工具链的分组和透视函数:

library(tidyverse)

# 定义Eco_Status的因子顺序
df$Eco_Status <- factor(df$Eco_Status, levels = c("poor", "average", "rich", "billionaire"))

# 添加分组内序号并透视
target_df <- df %>%
  group_by(Eco_Status) %>%
  mutate(group_seq = row_number()) %>%
  ungroup() %>%
  pivot_wider(names_from = Eco_Status, values_from = ID) %>%
  select(-group_seq)

需求2:提取四类Eco_Status对应的ID向量

Python 实现

可以批量生成字典存储,或单独提取每个类别的ID列表:

# 批量生成字典,键为状态名,值为对应ID列表
id_dict = {status: df[df['Eco_Status'] == status]['ID'].tolist() 
           for status in ['poor', 'average', 'rich', 'billionaire']}

# 单独提取每个向量(按需使用)
poor_ids = df[df['Eco_Status'] == 'poor']['ID'].tolist()
average_ids = df[df['Eco_Status'] == 'average']['ID'].tolist()
rich_ids = df[df['Eco_Status'] == 'rich']['ID'].tolist()
billionaire_ids = df[df['Eco_Status'] == 'billionaire']['ID'].tolist()

R 实现

使用split快速分组,或通过布尔索引单独提取:

# 一键生成包含所有ID向量的列表
id_list <- split(df$ID, df$Eco_Status)

# 单独提取每个向量(按需使用)
poor_ids <- df$ID[df$Eco_Status == "poor"]
average_ids <- df$ID[df$Eco_Status == "average"]
rich_ids <- df$ID[df$Eco_Status == "rich"]
billionaire_ids <- df$ID[df$Eco_Status == "billionaire"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:27:32