按Subject分组并将Interval每6个分箱后计算X、Y均值
按Interval每6个分箱计算各Subject的X/Y均值
要实现按每6个Interval一组分箱,再计算每个Subject在分箱内的X、Y均值,核心是先给Interval创建分箱分组变量,再结合Subject一起分组聚合,具体代码如下:
方法一:生成数字编号的分箱
用简单的算术运算生成1-5的分箱编号(30个Interval刚好分成5组,每组6个):
# 新增分箱列Bin mydata <- mydata %>% mutate(Bin = floor((Interval - 1)/6) + 1) # 按Subject和Bin分组计算均值 subset <- mydata %>% group_by(Subject, Bin) %>% summarise(across(X:Y, mean, na.rm = TRUE), .groups = "drop")
解释:floor((Interval - 1)/6) + 1会把Interval 1-6归为Bin1,7-12归为Bin2,以此类推,完美匹配每6个一组的需求。
方法二:生成带区间标签的分箱
如果想要分箱显示为"1-6"这类直观标签,用cut()函数:
# 新增带区间标签的分箱列 mydata <- mydata %>% mutate(Bin = cut(Interval, breaks = seq(0, 30, 6), labels = c("1-6", "7-12", "13-18", "19-24", "25-30"))) # 同样分组计算均值 subset <- mydata %>% group_by(Subject, Bin) %>% summarise(across(X:Y, mean, na.rm = TRUE), .groups = "drop")
你之前的代码只按Subject分组,所以计算的是该Subject下所有Interval的整体均值,现在加上分箱变量Bin后,就能得到每个分箱内的均值结果。
内容的提问来源于stack exchange,提问作者Miguel De Leon
相关产品推荐
相关产品推荐

