ddply
из пакета plyr
делает именно это. Он применяет функцию к каждому подмножеству данных на основе столбца.
plyr::ddply(df, "key", plyr::numcolwise(smooth_outliers))
Первый аргумент - это ваши данные с «ключом» и «итогом», второй аргумент - это переменная группировки, в данном случае «ключ».
Последняя переменная - это функция, которую вы хотите применить, здесь используется в основном функция numcolwise
, поэтому она применяется к столбцу, а не ко всей строке. Поэтому мы делаем функцию сглаживания на основе строк функцией на основе столбцов.
Тогда вуаля.
Вы получите кадр данных, в котором перечислены каждый ключ и его IQR, рассчитанный с помощью функции smooth_outliers
.
Вот результат.
key total
1 JM4YYM 1421
2 JM4YYM 1712
3 JM4YYM 1709
4 US4YYM 1114
5 US4YYM 1473
6 US4YYM 1181
7 US4YYM 1767
8 US4YYM 1005
9 US4ZAW 1138
10 US4ZAW 1156
11 US4ZAW 1982
12 US4ZNB 1338
13 US4ZNB 1075
14 US4ZNB 1806
Как видите, каждая клавиша сопоставляется с одним из выходов функции smooth_outliers.