在R中按subject对指定condition值求均值并生成新数据框
实现方法
可以用两种常见方式实现需求,分别是基于tidyverse的管道式写法和原生R写法:
方法一:使用dplyr(tidyverse生态)
先加载dplyr包,再分三步处理:生成聚合数据、提取test4数据、合并排序:
library(dplyr) # 生成aggregate组的均值数据 aggregate_data <- example %>% filter(condition %in% c("test1", "test2", "test3")) %>% group_by(subject) %>% summarise(condition = "aggregate", value = mean(value), .groups = "drop") # 提取原数据中的test4行 test4_data <- example %>% filter(condition == "test4") # 合并两个数据集并按subject排序,匹配示例结果格式 example_solution <- bind_rows(aggregate_data, test4_data) %>% arrange(subject, condition)
方法二:原生R写法(无需额外包)
用原生函数完成聚合、筛选和合并:
# 计算test1-test3的subject均值,生成aggregate组数据 aggregate_data <- aggregate(value ~ subject, data = example[example$condition %in% c("test1", "test2", "test3"), ], FUN = mean) aggregate_data$condition <- "aggregate" # 调整列顺序与原数据一致 aggregate_data <- aggregate_data[, c("subject", "condition", "value")] # 提取test4的行数据 test4_data <- example[example$condition == "test4", ] # 合并并排序得到最终结果 example_solution <- rbind(aggregate_data, test4_data) example_solution <- example_solution[order(example_solution$subject, example_solution$condition), ]
两种方法运行后得到的example_solution都和你给出的示例结果一致。
内容的提问来源于stack exchange,提问作者jo_
相关产品推荐
相关产品推荐

