R语言 如何从R数据框架的多列中移除异常值

R语言 如何从R数据框架的多列中移除异常值

在这篇文章中,我们将讨论如何在R编程语言中从多列中移除异常值。

为了从数据框中移除异常值,我们使用四分位数范围(IQR)方法。这种方法使用第一和第三四分位值来确定一个观察值是否是异常值。如果一个观察值是大于第三四分位数的1.5倍,或小于第一四分位数的1.5倍,它就被认为是一个离群值。

从R语言的多个列中移除离群点

要在R语言中找到离群点,我们使用以下函数,首先通过quantile()函数计算出观察值的第一和第三四分位数。然后我们把它们的差值计算为四分位数范围。然后,如果一个观察值比第三四分位数大1.5倍,或比第一四分位数小1.5倍的四分位数,则返回真。

语法:

detect_outlier <\- function(x) {

Quantile1 <\- quantile(x, probs=.25)

Quantile3 <\- quantile(x, probs=.75)

IQR = Quantile3-Quantile1

x > Q3 + (iqr*1.5) | x < Q1 - (iqr*1.5) }

然后,一旦识别出离群点,我们就用上述函数测试它们,将离群点去除。

例1 :

这里,是一个例子,我们从数据框架的三列中移除离群点。

# create sample data frame
sample_data < - data.frame(x=c(1, 2, 3, 4, 3, 2, 3, 4, 4, 5, 0),
                           y=c(4, 3, 5, 7, 8, 5, 9, 7, 6, 5, 0),
                           z=c(1, 3, 2, 9, 8, 7, 0, 8, 7, 2, 3))
print("Display original dataframe")
print(sample_data)
 
# create detect outlier function
detect_outlier < - function(x) {
 
    # calculate first quantile
    Quantile1 < - quantile(x, probs=.25)
 
    # calculate third quantile
    Quantile3 < - quantile(x, probs=.75)
 
    # calculate inter quartile range
    IQR = Quantile3-Quantile1
 
    # return true or false
    x > Quantile3 + (IQR*1.5) | x < Quantile1 - (IQR*1.5)
}
 
# create remove outlier function
remove_outlier < - function(dataframe,
                            columns=names(dataframe)) {
 
    # for loop to traverse in columns vector
    for (col in columns) {
 
        # remove observation if it satisfies outlier function
        dataframe < - dataframe[!detect_outlier(dataframe[[col]]), ]
    }
 
    # return dataframe
    print("Remove outliers")
    print(dataframe)
}
 
remove_outlier(sample_data, c('x', 'y', 'z'))

输出

如何从R数据框架的多列中移除异常值?

例2 :

这里,是一个例子,我们从数据框架的四列中移除异常值。

# create sample data frame
sample_data < - data.frame(x=c(-1, 2, 3, 4, 3, 2, 3, 4, 4, 5, 10),
                           y=c(-4, 3, 5, 7, 8, 5, 9, 7, 6, 5, 10),
                           z=c(-1, 3, 2, 9, 8, 7, 0, 8, 7, 2, 13),
                           w=c(10, 0, 1, 0, 1, 0, 1, 0, 2, 2, 10))
print("Display original dataframe")
print(sample_data)
 
 
# create detect outlier function
detect_outlier < - function(x) {
   
    # calculate first quantile
    Quantile1 < - quantile(x, probs=.25)
   
    # calculate third quantile
    Quantile3 < - quantile(x, probs=.75)
   
    # calculate inter quartile range
    IQR = Quantile3-Quantile1
   
    # return true or false
    x > Quantile3 + (IQR*1.5) | x < Quantile1 - (IQR*1.5)
}
 
# create remove outlier function
remove_outlier < - function(dataframe,
                            columns=names(dataframe)) {
   
    # for loop to traverse in columns vector
    for (col in columns) {
       
        # remove observation if it satisfies outlier function
        dataframe < - dataframe[!detect_outlier(dataframe[[col]]), ]
    }
   
    # return dataframe
    print("Remove outliers")
    print(dataframe)
}
 
remove_outlier(sample_data, c('x', 'y', 'z', 'w'))

输出

如何从R数据框架的多列中移除异常值?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程