debugging R -过滤器功能最终添加了一名患者?

q7solyqu  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(132)

我有一个大型数据集,其中包含不同患者与一所大学医院的交互(100,000行和列)。
我有两个主要的变量,一个是病人id变量(pid),另一个是二进制标记变量,我正在编写代码,这样如果一个特定病人的任何一行(交互)被标记(1),该病人应该从数据集中删除。

hosp <- hosp %>%
    group_by(pid) %>%
    filter(max(flag)==0) %>%
    ungroup()

现在的问题是,当我检查具有此代码的 * 唯一 * 患者的数量时

n_distinct(hosp$pid, na.rm=TRUE)

当我在过滤代码之前运行它时,得到的值是7834,但是当我在过滤代码之后运行它时,得到的值是7835!
为什么要多一个人?
正确的总行数被过滤掉了,只有pid变量的值在显示。

dgenwo3n

dgenwo3n1#

您的函数正在计算所有列中不同值的数量。也许您只需要n_distinct(hosp$pid, na.rm=TRUE)的不同PID。

NROW(iris)
#[1] 150
n_distinct(iris)
#[1] 149
n_distinct(iris$Petal.Width)
#[1] 22
iris2<-iris %>% 
  group_by(Species) %>%
  filter(max(Petal.Width)==2.5) %>%
  ungroup() 
n_distinct(iris2)
#[1] 49
n_distinct(iris2$Petal.Width)
#[1] 12

相关问题