r - 分组统计测试 tidyverse
问题描述
我正在尝试对长格式数据进行 Wilcoxon 测试。我想用来dplyr::group_by()
指定我想要进行测试的子集。
最终结果将是一个新列,其中将 Wilcoxon 检验的 p 值附加到原始数据框中。我见过的所有技术都需要总结数据框。我不想总结数据框。
请参阅重新格式化数据集以模仿我的数据的示例iris
,最后是我执行任务的尝试。
我快接近了,但我想保留 Wilcoxon 测试之前的所有原始数据。
# Reformatting Iris to mimic my data.
long_format <- iris %>%
gather(key = "attribute", value = "measurement", -Species) %>%
mutate(descriptor =
case_when(
str_extract(attribute, pattern = "\\.(.*)") == ".Width" ~ "Width",
str_extract(attribute, pattern = "\\.(.*)") == ".Length" ~ "Length")) %>%
mutate(Feature =
case_when(
str_extract(attribute, pattern = "^(.*?)\\.") == "Sepal." ~ "Sepal",
str_extract(attribute, pattern = "^(.*?)\\.") == "Petal." ~ "Petal"))
# Removing no longer necessary column.
cleaned_up <- long_format %>% select(-attribute)
# Attempt using do(), but I lose important info like "measurement"
cleaned_up %>%
group_by(Species, Feature) %>%
do(w = wilcox.test(measurement~descriptor, data=., paired=FALSE)) %>%
mutate(Wilcox = w$p.value)
# This is an attempt with the dplyr experimental group_map function. If only I could just make this a new column appended to the original df in one step.
cleaned_up %>%
group_by(Species, Feature) %>%
group_map(~ wilcox.test(measurement~descriptor, data=., paired=FALSE)$p.value)
谢谢你的帮助。
解决方案
模型对象可以包装在一个list
library(tidyverse)
cleaned_up %>%
group_by(Species, Feature) %>%
nest %>%
mutate(model = map(data, ~
.x %>%
transmute(w = list(wilcox.test(measurement~descriptor,
data=., paired=FALSE)))))
或者另一种选择是group_split
进入list
, 然后map
通过list
, 元素在应用模型后创建 'pval' 列
cleaned_up %>%
group_split(Species, Feature) %>%
map_dfr(~ .x %>%
mutate(pval = wilcox.test(measurement~descriptor,
data=., paired=FALSE)$p.value))
推荐阅读
- python - 如何根据 txt 文件上的描述对图像进行分类?
- python - Python中如何使用asyncio.wait_for到run_until_complete同步调用async方法
- python - 缓存或重试 + 在 API 调用之间切换(如果已关闭)
- reactjs - 通过功能组件中的 props 发送 ref
- python - python中lstrip和反斜杠的问题
- swagger - 渲染 Swagger OpenAPI v3 UI + Springboot 项目的问题
- firebase - 如何在 mongodb 中使用 multer 在我的 Firebase 存储中获取我的图片?
- flutter - 当它不可见时,如何将动画与可见性小部件一起使用?
- c# - Project 引用的 DataSetExtensions 并使用 System.Data 但扩展方法不可用
- qemu - Debian 10 上的 NFS 服务器,虚拟机无法挂载