Создание функции, которая использует dplyr, где аргументы передаются в фильтр - PullRequest
1 голос
/ 30 апреля 2019

Я провел анализ своего набора данных, но в расширенной форме, и хотел бы написать функцию для автоматизации детали, которую мне пришлось писать несколько раз.

#Null_proband outputs for disease tables
null.proband <- dbdata %>%
  filter(Proband == TRUE & Fam.state.mainmut.MutGroup == "Null") %>%
  group_by(ICD_Grouping) %>%
  summarise(n_distinct(PID),
            n_distinct(Fam.state.mainmut.FID),
            n(),
            median(AgeOfOnset))

#Column names for null_proband
colnames(null.proband) = c("ICD_Grouping", "proband_uniq(PID)", "proband_uniq(FID)", "proband_freq(PID)","proband_median(ageofonset)")

Я повторяю это несколько раз для разных наборов фильтров, и мне было интересно, могу ли я иметь базовую функцию с выбором предложений if

f1 <- function(x, pop = c("proband", "nonproband", "carrier", "unknown", "all), mut = ("null", "mis", "unk", "all"))

Это то, как я бы хотел настроить функцию, а затем базовый процесс dplyr

{ pop.mut <- dbdata %>%
filter(defined by arguments) %>%
group_by(ICD_Grouping) %>%
summarise(pop_uniqPID = n_distinct(PID),
          pop_uniqFID = n_distinct(FID),
          pop_freqPID = n(),
          pop_medianAgeOfOnset = median(AgeOfOnset))
}

И затем, если предложения, описывающие то, что фильтр должен в зависимости от аргумента, например.

if (pop = "proband" & mut = "null") { filter(Proband == TRUE & Fam.state.mainmut.Mutgroup == "Null") }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...