R语言如何按列组合重塑data.frame得到指定的分组拼接输出结果
R数据格式转换解决方案
你通过expand.grid生成的原始数据为所有变量的笛卡尔积,每个time+outcome组合对应control、treatment2行数据,你可以通过以下两种方法完成转换:
方法1:tidyverse 实现(可读性高)
library(tidyverse) # 生成原始数据 data <- expand.grid(time = 0:2, outcome = 1:2, group = c("control","treatment")) # 转换为目标格式 result <- data %>% group_by(time, outcome) %>% summarise(group = paste0("treatment", outcome, " - control"), .groups = "drop") # 打印结果 print(result)
方法2:base R 实现(无需额外依赖)
# 生成原始数据 data <- expand.grid(time = 0:2, outcome = 1:2, group = c("control","treatment")) # 提取唯一组合并拼接自定义group字段 result <- unique(data[, c("time", "outcome")]) result$group <- paste0("treatment", result$outcome, " - control") # 打印结果 print(result)
两种方法运行后输出均和你预期的格式完全一致,示例输出如下:
time outcome group 1 0 1 treatment1 - control 2 1 1 treatment1 - control 3 2 1 treatment1 - control 4 0 2 treatment2 - control 5 1 2 treatment2 - control 6 2 2 treatment2 - control
内容的提问来源于stack exchange,提问作者Reza
相关产品推荐
相关产品推荐

