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

基于R语言dplyr按pID分组生成block并统计唯一字母数

解决方案

首先加载所需工具包:

library(dplyr)
library(stringr)

步骤1:清理数据中的空格干扰

原始数据里的pID和condition存在前后空格,会影响分组和条件判断,先统一清理:

df_clean <- df1 %>%
  mutate(
    pID = str_trim(pID),
    condition = str_trim(condition)
  )

步骤2:生成block和Nletters_block列

按要求分组计算,用dplyr实现:

result <- df_clean %>%
  # 按pID分组标记block编号
  group_by(pID) %>%
  mutate(block = cumsum(condition == "false")) %>%
  # 按pID+block分组统计唯一字母数量
  group_by(pID, block) %>%
  mutate(
    Nletters_block = str_c(material, collapse = "") %>%
      str_split("") %>%
      unlist() %>%
      unique() %>%
      length()
  ) %>%
  ungroup()

结果说明

运行后得到的result数据框完全符合预期:

  • block列从每个pID的第一个"false"行开始标记为1,后续每遇到新的"false"行就自动递增编号
  • Nletters_block列统计了对应pID+block组合下,所有material字符串包含的唯一字母总数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:18:10