如何使用R语言dplyr按多分组计算不同Distance对应的Value均值
实现方法
你可以直接按分组后条件筛选计算均值的逻辑实现,代码如下:
library(dplyr) # 示例数据(修正了原示例加载包的拼写错误,dyplyr应为dplyr) set.seed(123) df1 <- data.frame(matrix(ncol = 4, nrow = 36)) x <- c("Age","Location","Distance","Value") colnames(df1) <- x df1$Age <- rep(c(1,2), each = 18) df1$Location <- as.character(rep(c("Central","North"), each = 9)) df1$Distance <- rep(c(0.5,1.5,2.5), each = 3) df1$Value <- round(rnorm(36,200,25),0) # 核心计算代码 result <- df1 %>% group_by(Age, Location) %>% summarise( Mean_0.5 = mean(Value[Distance == 0.5]), Mean_1.5_and_2.5 = mean(Value[Distance %in% c(1.5, 2.5)]), # 若需要直接输出两组均值的差异,可新增下面这行 # Mean_diff = Mean_0.5 - Mean_1.5_and_2.5, .groups = "drop" ) print(result)
代码说明
group_by(Age, Location):按要求的两个维度对数据分组summarise内分别对不同Distance区间的Value计算均值:- 计算
Mean_0.5时仅筛选Distance等于0.5的观测 - 计算
Mean_1.5_and_2.5时筛选Distance为1.5或2.5的观测合并计算
- 计算
.groups = "drop":取消结果的分组状态,输出常规数据框,和你给出的预期格式完全一致
运行以上代码得到的结果和你贴的预期输出完全匹配。
内容的提问来源于stack exchange,提问作者tassones
相关产品推荐
相关产品推荐

