ошибка в строке передачи в качестве имени столбца R t test - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь обобщить код ANOVA некоторых повторных измерений для строкового ввода переменной результата и переменной группировки, как показано ниже:

outcome_var<-"outcome_varnam1"
grouping_var <- "grouping_varnam1"

Поэтому в dplyr я могу вызывать соответствующие столбцы фрейма данных, используя

!!as.name(outcome_var)

это работает для большинства функций, но вызывает ошибку в сгруппированных попарных функциях t-теста

Error: Strings must match column names. Unknown columns: !!as.name(grouping_var)

Мне интересно, как вызвать переменные как имена столбцов в этой функции без явного использования имена объектов столбцов, так как полный код анализа ANOVA длинный, и я должен sh повторить это для десятков различных переменных результата и групповых факторов. Использование get () или sym () для меня не работает. Ниже приведен полный пример кода. Я надеюсь, что данный фрагмент данных дает достаточно информации.

temp<-data.frame(Subj.ID = c("a", "a", "a", "a", "a", "a"), 
                  timepoint = c("101", "102", "103", "104", "105", "106"),
                  grouping_varnam1 = c("Placebo", "Placebo", "Placebo", "Placebo", "Placebo", "Placebo"),
                  outcome_varnam1 = c(12.6, 9.6, 16.4, NA, 43.1, NA))
attach(temp)
outcome_var<-"outcome_varnam1"
grouping_var<-"grouping_varnam1"

#these lines for testing assumptions of anova work fine using the format:
temp %>% group_by(!!as.name(grouping_var)) %>% get_summary_stats(!!as.name(outcome_var), type = "mean_sd")
temp %>% group_by(!!as.name(grouping_var)) %>% identify_outliers(!!as.name(outcome_var))
temp %>% group_by(!!as.name(grouping_var)) %>% shapiro_test(!!as.name(outcome_var))


#this line for a pairwise t-test grouped by timepoint does not work:
temp %>%
      group_by(timepoint) %>%
      pairwise_t_test(!!as.name(outcome_var) ~ !!as.name(grouping_var), paired = FALSE, p.adjust.method = "holm")

Error: Strings must match column names. Unknown columns: !!as.name(grouping_var)

1 Ответ

0 голосов
/ 09 июля 2020

Если вы хотите использовать строки в формулах, вы можете использовать reformulate.

Данные вашего примера содержат слишком мало наблюдений для работы с двойным сгруппированным pairwise_t_test, но общая нотация будет следующей:

library(dplyr)
library(rstatix)

outcome_var <- "Sepal.Length"
grouping_var <- "Species"

iris %>% 
  pairwise_t_test(., reformulate(grouping_var, outcome_var), paired = FALSE, p.adjust.method = "holm")
#> # A tibble: 3 x 9
#>   .y.       group1   group2     n1    n2        p p.signif    p.adj p.adj.signif
#> * <chr>     <chr>    <chr>   <int> <int>    <dbl> <chr>       <dbl> <chr>       
#> 1 Sepal.Le… setosa   versic…    50    50 8.77e-16 ****     1.75e-15 ****        
#> 2 Sepal.Le… setosa   virgin…    50    50 2.21e-32 ****     6.64e-32 ****        
#> 3 Sepal.Le… versico… virgin…    50    50 2.77e- 9 ****     2.77e- 9 ****

Создано 08.07.2020 с помощью пакета . (v0.3.0)

...