Напишите функцию для перебора моих столбцов переменных в R - PullRequest
0 голосов
/ 04 августа 2020

У меня есть фрейм данных результатов кластерного анализа (помеченный cluster.assigned) 139 строк X 17 столбцов. Из 19 столбцов некоторые являются числовыми c переменными и называются «Возраст», «Продолжительность», «LDT» ... Каждой строке присваивается метка кластера. Строки можно дополнительно сгруппировать в 3 группы (я называю их uns, 2S, 3S) на основе метки в столбце, называемой «стимуляция». То есть в каждой группе у меня есть несколько кластеров.

Я хочу выполнить pairwise_t_test между этими кластерами в каждой группе для каждой интересующей переменной столбца numeri c. Например, я хочу увидеть, есть ли разница в возрасте среди всех кластеров в каждой группе. Я могу сделать это вручную для каждой переменной и каждой группы. Тогда я чувствую, что это классическая c проблема, которую должна выполнять функция. Поэтому мне нужна помощь в его создании, особенно в той части, где мне нужно обновить заголовок / метки графика, созданного для каждого теста.

Ниже приведен мой код для ручного выполнения t-теста кластеров:

#libraries that I need
library(rstatix)
library(ggpubr)
library(ggplot2)
library(tidyverse)

# split data into individual stimulated groups

CLL_uns <-filter(matched,Stimulation=="Unstimulated")
CLL_2S <-filter(matched,Stimulation=="2S")
CLL_3S <-filter(matched,Stimulation=="3S")


#----------uns cells-------------------------------
# in uns group I'm looking at the Age variable over all clusters
CLL_uns %>%
  group_by(Cluster.assigned) %>%
  get_summary_stats(Age, type = "mean_sd")

res.aov <- CLL_uns %>% anova_test(Age ~ Cluster.assigned)
res.aov
# Pairwise comparisons
pwc <- CLL_uns%>%
  pairwise_t_test(Age ~ Cluster.assigned, p.adjust.method = "BH",pool.sd = F)

# Show adjusted p-values
pwc <- pwc %>% add_xy_position(x = "Cluster.assigned")
ggboxplot(CLL_uns, x = "Cluster.assigned", y = "Age") +
  stat_pvalue_manual(pwc, label = "p.adj", tip.length = 0, step.increase = 0.1) +
  labs(
    subtitle = get_test_label(res.aov, detailed = TRUE),
    caption = get_pwc_label(pwc)
  )

# Show significance levels
# Hide non-significant tests
ggboxplot(CLL_uns, x = "Cluster.assigned", y = "Age") +
  stat_pvalue_manual(pwc, hide.ns = TRUE, label = "p.adj.signif") +
  labs(
    title = "Pairwise T-test on Age for mulitple clusters \nUnstimulated patients \nOnly 
significant test is shown",
    subtitle = get_test_label(res.aov, detailed = TRUE),
    caption = get_pwc_label(pwc)
  )
ggsave("Pairwise T-test on Age for UNS mulitple clusters.png", width = 10, height = 8)

Итак, как я могу сказать l oop это через Age, LDT, B2M, Stage ... эти столбцы для всего кода выше? и более амбициозно, могу ли я даже автоматизировать факторы группировки?

...