我需要将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吗?