通过新增列转换t检验结果的长格式dataframe
解决方案:提取t检验p-value为新列并转换数据结构
可以使用tidyverse工具包完成这个转换,步骤简洁高效:
步骤1:加载工具包并还原原始数据
library(tidyverse) # 原始输入数据 df <- structure(list(region = c("region 1", "region 1", "region 1", "region 2", "region 2", "region 2", "region 3", "region 3", "region 3", "region 4", "region 4", "region 4", "region 5", "region 5", "region 5", "region 6", "region 6", "region 6"), group = c("Male", "Female", "p-value", "Male", "Female", "p-value", "Male", "Female", "p-value", "Male", "Female", "p-value", "Male", "Female", "p-value", "Male", "Female", "p-value"), value = c(1.1, 0.9, 0.001, 0.5, 1.2, 0.612, 0.9, 0.1, 0.001, 0.9, 0.8, 0.7, 1.3, 0.8, 0.04, 2.3, 1.5, 0.561)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -18L))
步骤2:数据转换
result_df <- df %>% # 按区域分组,确保每个区域的p-value仅对应本组性别数据 group_by(region) %>% # 提取当前组的p-value值,生成新列并在组内重复填充 mutate(`p-value` = value[group == "p-value"]) %>% # 过滤掉p-value行,仅保留Male和Female的数据 filter(group != "p-value") %>% # 取消分组状态 ungroup() %>% # 调整列顺序为需求格式 select(region, group, value, `p-value`)
验证结果
运行代码后,result_df的结构与期望完全匹配:
# 查看转换后的数据 result_df
输出示例:
# A tibble: 12 × 4 region group value `p-value` <chr> <chr> <dbl> <dbl> 1 region 1 Male 1.1 0.001 2 region 1 Female 0.9 0.001 3 region 2 Male 0.5 0.612 4 region 2 Female 1.2 0.612 5 region 3 Male 0.9 0.001 6 region 3 Female 0.1 0.001 7 region 4 Male 0.9 0.7 8 region 4 Female 0.8 0.7 9 region 5 Male 1.3 0.04 10 region 5 Female 0.8 0.04 11 region 6 Male 2.3 0.561 12 region 6 Female 1.5 0.561
内容的提问来源于stack exchange,提问作者Stephen Okiya
相关产品推荐
相关产品推荐

