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

如何在R中统计每个Parent对应的子项数量(已实现Excel版本)

在R中统计每个Parent对应的成员数量

我来帮你搞定这个需求!你在Excel里用公式实现了统计每个Parent对应的成员数,现在用R来做其实更简洁,我给你两种实用的方法,适配不同的场景:

方法一:基础R实现(无需额外包)

首先我们先构造你的示例数据,方便演示:

# 还原你的数据集
data <- c("Parent", "Child", "Child", "Child",
          "Parent", "Child", "Child",
          "Parent", rep("Child", 10))

核心思路是给每个Parent及其后续的Child分配唯一分组ID,然后统计每个分组的元素总数:

# 生成分组ID:每遇到一个"Parent"就创建新分组
group_ids <- cumsum(data == "Parent")

# 统计每个分组的成员数量
parent_member_counts <- table(group_ids)

# 转换为更直观的数据框格式
result <- data.frame(
  Parent_Group = paste("Parent", names(parent_member_counts)),
  Member_Count = as.vector(parent_member_counts)
)

print(result)

运行后你会得到和Excel公式一致的结果:第一个Parent对应4个成员,第二个对应3个,第三个对应11个。

逻辑解释

cumsum(data == "Parent")会生成一个递增的向量:每遇到一个Parent,布尔值TRUE会被转为1,累加后分组ID加1,这样同一个Parent和它的所有Child会被分到同一个组里。table()函数会自动统计每个组的元素个数,也就是每个Parent对应的成员总数(包含Parent自己)。

方法二:用dplyr包实现(适合数据框场景)

如果你的数据是存储在数据框中(这是R中更常见的数据分析格式),可以用dplyr包的管道语法来实现,代码可读性更强:

library(dplyr)

# 将数据放入数据框
df <- tibble(role = data)

# 分组统计成员数
result_df <- df %>%
  # 创建分组ID
  mutate(group_id = cumsum(role == "Parent")) %>%
  # 按分组ID聚合
  group_by(group_id) %>%
  # 统计每组的元素数量
  summarise(Member_Count = n()) %>%
  # 取消分组
  ungroup() %>%
  # 给分组命名(可选)
  mutate(Parent_Group = paste("Parent", group_id)) %>%
  select(Parent_Group, Member_Count)

print(result_df)

这个方法和基础R的逻辑完全一致,只是用了更适合数据分析的管道语法,后续如果要做更多数据处理会更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:57:12