####
**Live Online Training :**
Data Science with R

- Explain Advanced Algorithms in Simple English

- Live Projects

- Case Studies

- Job Placement Assistance

- Get 10% off till Oct 26, 2017

- Batch starts from October 28, 2017

To correct outlier problem, we can winsorise extreme values. Winsorize at the 1st and 99th percentile means values that are less than the value at 1st percentile are replaced by the value at 1st percentile, and values that are greater than the value at 99th percentile are replaced by the value at 99th percentile.

########################################################

# R Function for Outlier Treatment : Percentile Capping

########################################################

pcap <- function(x){for (i in which(sapply(x, is.numeric))) {quantiles <- quantile( x[,i], c(.05, .95 ), na.rm =TRUE)x[,i] = ifelse(x[,i] < quantiles[1] , quantiles[1], x[,i])x[,i] = ifelse(x[,i] > quantiles[2] , quantiles[2], x[,i])}x}# Replacing extreme values with percentilesabcd = pcap(mydata)# Checking Percentile values of 7th variablequantile(abcd[,7], c(0.25,0.5,.95, .99, 1), na.rm = TRUE)

Hey thanks for your post. I tried your code but it gave an error. I am trying to pass a data frame as an argument and winsorise each column. I copied your code and the following error was displayed:

ReplyDeleteError in check_names_df(j, x) : object 'i' not found

Any help would be appreciated. Thanks