首页 > 解决方案 > 如何根据每位患者特定变量的读数数量对患者数据进行子集化?

问题描述

我一直在努力寻找答案,但运气不佳。我将添加一些类似数据的样本。

我在这里尝试做的是从我的子集中排除患者 1 和患者 4,因为他们只有一个“流动性评分”读数。到目前为止,我一直无法找到一种方法来计算每个患者在每个变量下的读数数量。如果患者只有一个或零个读数,我想将它们从子集中排除。

这是指向示例数据的 imgur 链接。我无法上传真实数据,但它与此类似

在此处输入图像描述

标签: rexceldataframesubset

解决方案


这可以通过dplyr和来完成group_by。有关更多信息,请参阅?group_by?summarize

# Create random data
dta <- data.frame(patient = rep(c(1,2),4), MobiScor = runif(8, 0,20))
    dta$MobiScor[sample(1:8,3)] <- NA

# Count all avaiable Mobility scores per patient and leave original format   
library(dplyr)
dta %>% group_by(patient) %>% mutate(count = sum(!is.na(MobiScor)))
# Merge and create pivot table
  dta %>% group_by(patient) %>% summarize(count = sum(!is.na(MobiScor)))

示例数据

  patient  MobiScor
1       1 19.203898
2       2 13.684209
3       1 17.581468
4       2        NA
5       1        NA
6       2        NA
7       1  7.794959
8       2        NA

结果(变异)1)

 patient MobiScor count
    <dbl>    <dbl> <int>
1       1    19.2      3
2       2    13.7      1
3       1    17.6      3
4       2    NA        1
5       1    NA        3
6       2    NA        1
7       1     7.79     3
8       2    NA        1

结果(总结)2)

  patient count
    <dbl> <int>
1       1     3
2       2     1

推荐阅读