求助:使用dplyr按ID和日期统计观测值(不按值去重)
解决按ID统计不同日期-收缩压组合数的问题
你的核心需求是统计每个ID下日期与收缩压的唯一组合数量——示例中对应3个组合(2021-11-25+128、2021-11-26+125、2021-11-27+128),但原代码仅统计了收缩压数值的唯一值,因此得到错误结果。
修正后的代码
直接在n_distinct()中同时传入DATE和SISTOLIC参数,即可计算两者的唯一组合数:
data <- data %>% group_by(ID) %>% mutate( n_sistolic = n_distinct(DATE, SISTOLIC), n_days_followup = n_distinct(DATE) )
处理后的结果
执行代码后,数据会完全符合你的期望格式:
| ID | DATE | SISTOLIC | n_sistolic |
|---|---|---|---|
| 1 | 2021-11-25 | 128 | 3 |
| 1 | 2021-11-26 | 125 | 3 |
| 1 | 2021-11-27 | 128 | 3 |
| 1 | 2021-11-27 | 128 | 3 |
| 1 | 2021-11-27 | 128 | 3 |
| 1 | 2021-11-27 | 128 | 3 |
逻辑说明
n_distinct()支持传入多个变量,会自动计算这些变量组合后的唯一值数量,刚好匹配你需要的“不同日期对应的有效记录”统计逻辑——即使收缩压数值相同,只要日期不同,就会被算作不同的有效记录。
内容的提问来源于stack exchange,提问作者JOSE ANTONIO RUIZ TAGLE MATURA
相关产品推荐
相关产品推荐

