我有一个大型数据集,其中包含不同患者与一所大学医院的交互(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变量的值在显示。
1条答案
按热度按时间dgenwo3n1#
您的函数正在计算所有列中不同值的数量。也许您只需要
n_distinct(hosp$pid, na.rm=TRUE)
的不同PID。