Начиная с фрейма данных, который состоит из разных сайтов и ряда статистических данных ...
test_df <- data.frame(site = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"), stat1 = c(0.44, 11, 0.45, 0, 5, 2, 2.3, 1.8, -3, 0), stat2 = c(10, 9, 10.1, 8, 7, 8.2, 8, 9.5, 9.6, 8), stat3 = c(0, 0.2, 0, 0.1, 0.15, 0.12, 1, -1, 0.15, 0.11))
# site stat1 stat2 stat3
# A 0.44 10 0
# B 11 9 0.2
# C 0.45 10.1 0
# D 0 8 0.1
# E 5 7 0.15
# F 2 8.2 0.12
# G 2.3 8 1
# H 1.8 9.5 -1
# I -3 9.6 0.15
# J 0 8 0.11
Я хотел бы провести l oop через каждую статистику и вывести один фрейм данных, где только значения, которые присутствуют для каждого показателя, являются значениями, которые выше 75-го процентиля или ниже значения 25-го процентиля для этого столбца спецификаций c, который будет выглядеть примерно так ...
# site stat1 stat2 stat3
# A NA 10 0
# B 11 NA 0.2
# C NA 10.1 0
# D 0 NA NA
# E 5 7 NA
# F NA NA 0.12
# G 2.3 NA 1
# H NA NA -1
# I -3 9.6 NA
# J 0 NA NA
Вот мой Подходя пока ...
# I know I can filter out values for one stat at a time by doing the following...
stat1_df <- test_df %>% filter(stat1 > quantile(stat1, 0.75) | (stat1 < quantile(stat1, 0.25))) %>% select(site, stat1)
stat1_df
# site stat1
# B 11.0
# D 0.0
# E 5.0
# G 2.3
# I -3.0
# J 0.0
Но я изо всех сил пытаюсь сделать так, чтобы я мог автоматизировать / l oop через столбцы статистики и создать желаемый окончательный кадр данных со всеми столбцами. Буду признателен за любые идеи. Фактические файлы, с которыми я буду работать, имеют более 100 статистик, поэтому я действительно сосредоточен на том, чтобы максимально автоматизировать.