R语言-数据预处理的一些实用(万能)办法:缺失值、数据重复、共线性等等的处理

本文主要是介绍R语言-数据预处理的一些实用(万能)办法:缺失值、数据重复、共线性等等的处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#在这里呢主要是想介绍一下数据预处理的一些常用问题:缺失值、数据重复、共线性等等的处理办法,自己写了一点代码,希望能帮助到有需要的朋友
#删除缺失比例达到20%的列,并打印出删除的列
fun1<-function(data,naratio=0.2){
  na_ratio<-apply(is.na(data),2,sum)/nrow(data)#求每列的缺失比例
  x<-data[,na_ratio<naratio]#保留缺失比例小于0.2的列
  print(colnames(data)[na_ratio>=naratio])#打印出被删除的列变量名
  return(x)
}

#或者可以直接利用R中的DMwR包来进行处理
library(DMwR)
data4<-data[-manyNAs(data,nORp=0.2),] #删除缺失比例达到20%(默认0.2)的行(如果想删除列先将矩阵进行转置就行了)

#删除某列众数比例达到50%的列,并打印出删除的列
fun2<-function(data){
  fun_const<-function(x){ 
    xn1<-which.max(table(x))#找出每列的众数
    return(x[xn1])
  }
  constant1<-as.numeric(apply(data,2,fun_const))
  fun_i<-function(data,constant1,i){
    zero_ratio<-sum(data[,i]==constant1[i])/nrow(data)
    return(zero_ratio)
  }
  zero_ratio1<-numeric(ncol(data))
  
  for(i in 1:ncol(data)){
    zero_ratio1[i]<-fun_i(data,constant1,i)
  }
  data1<-data[,zero_ratio1<0.5]
  print(colnames(data)[zero_ratio1>=0.5])
  return(data1)
}

#删除相关系数达到0.9的列,并打印出删除的列
fun3<-function(data,corr=0.9){
  xc<-cor(data);diag(xc)=0
  lc<-which(abs(xc)>=corr,arr.ind = T)
  if(length(lc)!=0){
    lc1<-lc[lc[,1]<lc[,2],]
    if(is.matrix(lc1)) lcd<-unique(lc1[,2]) else lcd<-lc1[2]
    x<-data[,-lcd]
    print(colnames(data)[lcd])
    return(x)
  } else return(data)
}

#删除列名重复的情形(可能列名只是差个空格或者其他符号,但其实是同一个变量)
col_name<-colnames(data)
col_name1<-gsub(" ","",col_name)#删掉变量名中的空格
new_col<-unique(col_name1)
data1<-data[,match(new_col,col_name1)]

#其实这些都是平时做数据处理时可以预先做的一些简单处理,还是非常实用的,但是我只是针对自己的数据编写的,如果数据不一样会出现一些小问题,只要稍微做下修改应该就没啥问题,有好办法欢迎来贴,只有互相学习才能更快的提升自己!





这篇关于R语言-数据预处理的一些实用(万能)办法:缺失值、数据重复、共线性等等的处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/925560

相关文章

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp