使用条件为n_distinct的每个患者的计算平均值

时间:2019-03-04 14:13:40

标签: r dataframe dplyr average distinct-values

在我的数据框中,我想计算执行医疗保健活动的绝对频率,相对频率和每位患者执行的平均次数。

我使用以下代码来计算医疗保健利用率:

Df %>%
   group_by(A) %>%
   summarize(n = n()) %>%
   mutate(rel.freq = (n/sum(n))*100) %>%
   mutate(avg.A.pt = n/sum(n_distinct(Person[A == A])))   

我对代码的最后一行有疑问。 我需要计算一种特定类型的护理的每位患者的活动数量,计算方法为:活动的总数量n除以患者的唯一数量n_distinct(Person),但仅除以接受康复的患者特定的护理类型Person[HCU == HCU]

我想要的结果看起来像这样:

*HCU    n     rel.freq     avg.hcu.pt*
ECG   486      10%          4.0
Echo  301      8%           1.8

您能帮我解决代码吗?

提前谢谢!


回复后,一些其他信息:

我在安全的环境中使用远程访问,因此很遗憾,我无法为您提供数据样本。 我有大约20.000名患者的数据集,他们接受了11.000.000例医疗保健活动(行)和34列,例如专科,医疗保健中心,年龄和个人密码。 对于我的文章,我想展示一下: -至少接受过一次特定医疗保健活动的(唯一)患者的百分比(我称之为相对频率) -每位(唯一)患者的平均医疗保健活动(特定类型)

基本上,我已经映射了护理的类型,例如,使用group_by和dplyr的filter进行的实验室测试,这给了我实验室测试的总数。 但是,现在我想具体说明,例如有多少患者至少接受了一次MRI检查,有多少患者从未接受过MRI检查,平均接受了多少MRI检查。

我尝试了你的建议

Df %>%
Group_by(A, Person) %>%
Summarise(n = n())

# A= healthcare activities

哪个给我:

A            Person         n
MRI        1                 6
MRI        2                 2
… for all >1000 patients who received MRI
Echo      1                 3
And so on

我如何获得MRI患者的百分比?每位患者的MRI平均数量是多少?

1 个答案:

答案 0 :(得分:0)

让我们创建一些玩具数据。四种具有不同概率的处理。 100位患者就诊1000次。

set.seed(123)
df<-data.frame(A = sample(c("MRI", "ECG", "Echo", "PET"), 1000,
                          prob=c(0.05, 0.8, 0.13, 0.02), replace=TRUE),
               p = sample(1:100, 1000, replace=TRUE))

现在我们汇总数据

    df %>% 
  # group by Treatment and patients
  group_by(A, p) %>% 
  # first summary is the number of a specific treatments for each patient
  summarise(n = n()) %>% 
  # next summary we sum the number distinct patients in the group
  # and divide by sum the number of distinct patients to get the rel.freq of the treatment.
  # Then we take the mean value of the number of treatment pr. patient 
  summarise(rel.freq   = n_distinct(p)/n_distinct(df$p),
            avg.hcu.pt = mean(n))

结果

# A tibble: 4 x 3
A     rel.freq avg.hcu.pt
<fct>    <dbl>      <dbl>
1 ECG       1          8.02
2 Echo      0.76       1.72
3 MRI       0.37       1.30
4 PET       0.17       1.12