如何在R中按ID统计Fitbit数据集内用户的有效记录天数
按ID统计Fitbit用户提交数据天数的解决方案
核心实现(dplyr方式)
因为每个用户每天存在重复数据,需要统计唯一日期的数量,用dplyr的n_distinct()函数即可实现:
library(dplyr) # 替换your_data为你的数据集名称 user_active_days <- your_data %>% group_by(ID) %>% summarise(active_days = n_distinct(ActivityDay))
基础R替代方案
如果不想依赖dplyr,也可以用基础R的aggregate函数:
user_active_days <- aggregate(ActivityDay ~ ID, data = your_data, FUN = function(x) length(unique(x))) # 重命名统计列 colnames(user_active_days)[2] <- "active_days"
关于你之前尝试的问题说明
- 用
summarise结合count失败:count()默认统计分组内的总行数,而非去重后的日期数,所以无法得到正确的天数。 case_when不适用:该函数用于条件分支赋值,不适合这种分组计数场景。count_date_between不存在:这个函数并非R基础包或主流数据处理包中的内置函数,因此会报错。
内容的提问来源于stack exchange,提问作者Gooms
相关产品推荐
相关产品推荐

