Я провел анализ своего набора данных, но в расширенной форме, и хотел бы написать функцию для автоматизации детали, которую мне пришлось писать несколько раз.
#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") }
и написать для циклов для всех комбинаций или я могу написать для циклов для половины фильтра с аргументами или просто отфильтровать один раз для одного аргумента, а затем отфильтровать второй раз для второго аргумента?