Ошибка в match.arg(p.adjust.method): "arg" должно быть NULL или символьным вектором
Здесь мои данные
mydat=structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), group = c(1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L), var = c(23L, 24L, 24L, 23L, 23L,
24L, 24L, 23L, 23L, 24L, 24L, 23L, 23L, 24L, 24L, 23L, 23L, 24L,
24L, 23L, 23L, 24L, 24L, 23L)), .Names = c("id", "group", "var"
), class = "data.frame", row.names = c(NA, -24L))
Я хочу объединить две таблицы. Идентификатор является идентификатором.
library(tidyverse)
mdyat %>%
with(.,pairwise.wilcox.test(var,id, group, exact =F)) %>%
broom::tidy() %>%
complete(id,group) %>%
left_join(mydat %>%
group_by(id,group)) %>%
summarise_all(c("mean", "sd", "median"))
by=c("id,group")
и получите ошибку
Error in match.arg(p.adjust.method) :
'arg' must be NULL or a character vector
Как сделать, чтобы этот скрипт выполнялся для каждого идентификатора отдельно IE Desired output
id mean sd median p.value
1 1 23,5 0.5773503 23,5 NA
1 2 23,5 0.5773503 23,5 1
1 3 23,5 0.5773503 23,5 1
2 1 23,5 0.5773503 23,5 NA
2 2 23,5 0.5773503 23,5 1
2 3 23,5 0.5773503 23,5 1
2 ответа
Решение
Первая часть может быть исправлена с помощью group_by
а также do
следующее.
mydat %>%
group_by(id) %>%
do({
with(., pairwise.wilcox.test(var, group, exact =F)) %>% broom::tidy()
})
## # A tibble: 6 x 4
## # Groups: id [2]
## id group1 group2 p.value
## <int> <fctr> <chr> <dbl>
## 1 1 2 1 1
## 2 1 3 1 1
## 3 1 3 2 1
## 4 2 2 1 1
## 5 2 3 1 1
## 6 2 3 2 1
Чтобы объединить это со сводной статистикой, вам нужно решить, к какой группе вы хотите присоединиться (group1
или же group2
). В следующем я присоединился к group1
, Итак mean
, sd
а также median
Ссылаться на group1
и p.value
относится к разнице между group1
а также group2
,
mydat %>%
group_by(id) %>%
do({
with(., pairwise.wilcox.test(var, group, exact =F)) %>% broom::tidy()
}) %>%
mutate(group1 = as.numeric(as.character(group1)),
group2 = as.numeric(as.character(group2))) %>%
complete(group1 = mydat$group) %>%
left_join(mydat %>% group_by(id,group) %>% summarise_all(c("mean", "sd", "median")),
by=c('id', 'group1'='group'))
Ваши аргументы функции неверны:
pairwise.wilcox.test(var,id, group, exact =F)
?pairwise.wilcox.test
утверждает правильный синтаксис как:
pairwise.wilcox.test(x, g, p.adjust.method = p.adjust.methods,
paired = FALSE, ...)
это означает, что третий аргумент функции должен быть p.adjust.method
не group
,