在R中统计各Status分类对应的乘客数量及具体姓名的实现方法
R按身份分类统计人数及对应乘客名单实现方案
假设你的原始数据集已经导入R,存储为数据框passenger_df,包含Passenger(乘客姓名)、Status(身份)两列。
方案1:使用dplyr包(代码可读性高)
- 加载依赖包
library(dplyr) - 计算代码:
stat_result <- passenger_df %>% group_by(Status) %>% summarise( 乘客总人数 = n(), 乘客姓名列表 = list(Passenger) )
- 结果说明:输出的
stat_result每一行对应一个身份分类,乘客总人数列为该分类下的总人数,乘客姓名列表为列表格式,每个元素存储对应分类的所有乘客姓名向量,无需拼接字符串,直接提取即可使用。 - 调用示例:提取身份为
Mrs.的所有乘客姓名:stat_result$乘客姓名列表[[which(stat_result$Status == "Mrs.")]]
方案2:基础R实现(无需安装第三方包)
- 代码如下:
# 按身份拆分乘客姓名 name_list <- split(passenger_df$Passenger, passenger_df$Status) # 整合统计结果 stat_result <- data.frame( Status = names(name_list), 乘客总人数 = lengths(name_list), row.names = NULL ) stat_result$乘客姓名列表 <- name_list
- 结果说明:输出结构和dplyr方案完全一致,也可以直接通过
name_list[["Mrs."]]直接调取对应身份的乘客列表。
内容的提问来源于stack exchange,提问作者Bartholomew
相关产品推荐
相关产品推荐

