Я пытаюсь провести тест на вилькоксин на долго отформатированных данных.Я хочу использовать dplyr group_by, чтобы указать подмножества, на которых я хотел бы провести тест.Конечным результатом будет новый столбец со значением p теста Уилкокса, добавленным к исходному фрейму данных.Все техники, которые я видел, требуют суммирования фрейма данных.Я НЕ хочу обобщать фрейм данных.
Пожалуйста, посмотрите пример переформатирования Iris для имитации моих данных и, наконец, мои попытки выполнить задачу.Я уже близко, но я хочу сохранить все свои исходные данные до теста Уилкокса.
#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)
Спасибо за вашу помощь.