将函数应用于数据集组

时间:2018-08-28 17:12:31

标签: r dplyr grouping

我需要将replace_outliers()函数应用于每组ID。我写了这样的东西:

replace_outliers <- function(column) {
  qnt <- quantile(column, probs=c(.25, .75))
  upper_whisker <- 1.5 * IQR(column)
  clean_data <- column
  clean_data[column > (qnt[2] + upper_whisker)] <- median(column)
  clean_data
}

ids <- unique(data$ID)
data_chunks <- lapply(ids, function(ids){data %>% filter(ID == ids)})
clean_data <- lapply(data_chunks,
                      function(data_chunks)
                      {
                        cbind(data_chunks[1:3],
                               lapply(data_chunks[4:7], replace_outliers),
                               data_chunks[8])
                      }
                     )
clean_data <- bind_rows(clean_data)
clean_data <- clean_data[-2]

我敢肯定,我可以以某种方式更好地重写它,但我找不到方法。可以使用dplyr吗?

0 个答案:

没有答案