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

如何在R中按`-1`列分组生成含semester列表的DataFrame?

R语言实现分组聚合semester列需求

你需要对现有tibble按-1列分组,聚合出每个分组下major=1对应的semester值(用逗号连接,无符合条件则为NA),同时major列固定为1。

原始数据结构

# A tibble: 52,300 × 3
     `-1` semester major
    <int> <chr>    <dbl>
 1 353323 0            0
 2 353323 1            0
 3 353323 2            0
 4 353324 0            1
 5 353324 1            1
 6 353324 2            1
 7 353324 3            0
 8 353325 0            0
 9 353325 1            1
10 353325 2            1

预期结果

`-1` semester major
    <int> <chr>    <dbl>
 1 353323 NA            1
 2 353324 0,1,2         1
 3 353325 1,2           1

解决方案

使用dplyr包的分组聚合功能即可实现,代码如下:

library(dplyr)

result_df <- original_df %>%
  group_by(`-1`) %>%
  summarise(
    semester = ifelse(
      any(major == 1),
      paste(semester[major == 1], collapse = ","),
      NA_character_
    ),
    major = 1L
  ) %>%
  ungroup()

代码说明

  • group_by(-1):按-1列对数据分组
  • summarise():执行聚合操作生成新列
    • 先通过any(major == 1)判断分组内是否存在符合条件的行,存在则用paste(..., collapse=",")拼接semester值;不存在则返回NA
    • major = 1L:将major列固定为整数类型的1,匹配原始数据类型
  • ungroup():取消分组状态,得到最终的tibble

若未安装dplyr,先执行install.packages("dplyr")完成安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:03:15