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

使用tbl_merge合并表格后,如何过滤p值≥5%的观测行?

解决方法

要实现合并男女分群的tbl_hierarchical表格后过滤掉任意p值≥5%的行,核心思路是直接修改合并后表格的底层数据——因为合并后的对象不再是tbl_hierarchical,无法用filter_hierarchical,但可以通过修改其内置的table_body数据框来完成过滤,同时保留合并后的表格结构,避免合并前过滤丢失仅存在于单个表格的观测。

具体操作步骤

  1. 生成并合并男女分群的层级表格
    先按性别筛选数据,分别生成tbl_hierarchical表格,再用tbl_merge合并:

    # 生成男性层级表格
    tbl_male <- ADAE %>%
      filter(SEX == "M") %>%
      tbl_hierarchical(
        # 填入你的参数,比如term变量、统计量设置、p值计算逻辑等
        term = AEDECOD,
        by = TRTA,
        statistic = list(all_categorical() ~ "{n}/{N} ({p}%)"),
        test = all_categorical() ~ chisq_test()
      )
    
    # 生成女性层级表格
    tbl_female <- ADAE %>%
      filter(SEX == "F") %>%
      tbl_hierarchical(
        term = AEDECOD,
        by = TRTA,
        statistic = list(all_categorical() ~ "{n}/{N} ({p}%)"),
        test = all_categorical() ~ chisq_test()
      )
    
    # 合并两个表格
    merged_tbl <- tbl_merge(
      list(tbl_male, tbl_female),
      tab_spanner = c("Male", "Female")
    )
    
  2. 查看合并后表格的底层列名
    先确认p值列的具体名称(合并后通常会命名为p.value_1、p.value_2,对应第一个和第二个输入表格的p值):

    # 打印底层数据框查看列名
    print(merged_tbl$table_body)
    
  3. 过滤p值≥5%的行
    使用modify_table_body()直接修改合并后表格的底层数据,过滤掉任意一个p值≥0.05的行:

    filtered_tbl <- merged_tbl %>%
      modify_table_body(function(data) {
        # 过滤条件:只要男性或女性的p值≥0.05,就移除该行
        data %>%
          filter(!(p.value_1 >= 0.05 | p.value_2 >= 0.05))
      })
    
  4. (可选)清理空的父层级行
    如果你的层级表格有父项(比如系统器官分类),过滤后可能出现父项没有子项的情况,可以额外添加逻辑删除这类空父行:

    filtered_tbl <- merged_tbl %>%
      modify_table_body(function(data) {
        # 第一步:过滤p值不符合条件的行
        filtered_data <- data %>%
          filter(!(p.value_1 >= 0.05 | p.value_2 >= 0.05))
        
        # 第二步:找出仍有子项的父层级
        # 假设子项的term以父项term为前缀,用分隔符(比如.)区分
        valid_parents <- filtered_data %>%
          filter(row_type == "level") %>%
          pull(term) %>%
          stringr::str_extract("^[^.]+") %>%
          unique()
        
        # 保留有子项的父层级,以及所有子项行
        filtered_data %>%
          filter(row_type == "level" | term %in% valid_parents)
      })
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 03:07:38