使用 R 计算 REDCap 数据库中的重复实例

问题描述 投票:0回答:1

我有一个关于数据库中有关患者特定数据和重复事件的子集的问题。我有(本质上,显示的表格是简化的)一个数据库,其中包含任何给定患者的记录 ID,以及有关他们的年龄和在医院住院时间 (los) 的信息。此外,我们还收集不良事件的数据(即因医疗干预而对患者造成的伤害)。这些 ae 是重复事件并按原样列出,这意味着任何 ae 都对应于某个患者(记录 ID),并包含有关它是否是 ae 的信息,如果是,它是什么类型的 ae(ae_type,如果是 NA)不是 ae,如果是一个,则对应于某种类型)。因为数据库是这样建立的,所以我们必须填写一个对应不同类型ae的表格,如果表格填写完毕,则显示为重复事件= 1。

记录_id ae_重复 ae_类型 年龄 洛斯
1 不适用 不适用 25 7
1 1 1 不适用 不适用
1 1 不适用 不适用 不适用
1 1 不适用 不适用 不适用
2 不适用 不适用 30 12
2 1 不适用 不适用 不适用
2 1 不适用 不适用 不适用
2 1 1 不适用 不适用
3 不适用 不适用 55 14
3 1 1 不适用 不适用
3 1 1 不适用 不适用
3 1 不适用 不适用 不适用

现在回答我的实际问题。出于子集化的目的,我需要计算任何给定患者遭受的 ae 数量(即 ae_type != NA),为此我想创建一个新变量,用于计算患者遭受的 ae 数量。有什么办法可以做到吗?

我尝试了使用 dplyr 和 mutate 或 summarize 函数的各种方法,但似乎没有任何效果。

r repeat counting medical redcap
1个回答
0
投票

只需按 record_id 列进行分组。另请参阅here了解如何在 stackoverflow 上提出好问题

library(dplyr)
db <- structure(
  list(
    recor_id = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3,
                 3),
    ae_repeat = c("NA", "1", "1", "1", "NA", "1", "1", "1", "NA",
                  "1", "1", "1"),
    ae_type = c("NA", "1", "NA", "NA", "NA", "NA",
                "NA", "1", "NA", "1", "1", "NA"),
    age = c(
      "25",
      "NA",
      "NA",
      "NA",
      "30",
      "NA",
      "NA",
      "NA",
      "55",
      "NA",
      "NA",
      "NA"
    ),
    los = c("7",
            "NA", "NA", "NA", "12", "NA", "NA", "NA", "14", "NA", "NA", "NA")
  ),
  class = c("tbl_df", "tbl", "data.frame"),
  row.names = c(NA,-12L)
)

new_db <-
  db %>% group_by(recor_id) %>% mutate(n_ae = length(unique(ae_type[!is.na(ae_type)])))
© www.soinside.com 2019 - 2024. All rights reserved.