R语言学习--Day03--数据清洗技巧

在一般情况下,我们都是在数据分析的需求前提下去选择使用R语言。而实际上,数据分析里,百分之八十的工作,都是在数据清洗。并不只是我们平时会提到的异常值处理或者是整合格式,更多会涉及到将各种各样的数据整合,按照要求去除掉不合规的数据,再并到一起形成一个纯净的,可利用的数据,甚至有些时候还需要进行脱敏操作,防止对后续模型训练之类的影响,下面我来介绍一下经常会用到的操作。

筛选

按行操作

1、一般来讲,我们用的最多的就是filter(),无他,简单易懂,只需要在括号内加上我们的条件就行了,不过要注意用于筛选的条件一般都是要满足其格式的,建议在写之前先明确好要用到的东西,而不是一股脑地写逻辑。当然了,这里我也踩过一个小坑,就是filter()在运行时是不能识别NA的,在筛选时会自动去掉NA那一行,会因此忽略掉很多信息,所以我们一般先对数据集做NA判断,用is.na(),将NA值返回为1或者0,从而避免过滤了重要的信息。

2、而另一个用的比较多的就是slice()了,一般我们在筛选排名或者时间时用到,比如

lab_base <- lab_base %>%group_by(ID)%>% # 按照ID分组arrange(TIME)%>% # 按照TIME排序 slice(TIME,n=1)%>% # 选取时间最早的数据ungroup()%>%dplyr::select(ID,TIME,VALUE)

代码的意思是在每一组ID的分组内,先按照时间排序,再筛选时间最早的那个数据保留,这种用法相比平时用mid_time,可以节省很多算力空间,尤其是在涉及到数据量很大的rds文件时,大大提高我们的效率。

按列操作

而select()和mutate(),相信如果接触过一点R语言的都知道,我们经常会看到这两个语法,前者是把保存想要的列数据,后者则是对数据进行操作,添加或减少变量,有时也会用来添加中间变量来协助筛选,在结束时再去掉。值得注意的是,有很多包里都有select()的用法,我们一般默认的select()是dplyr里的,如果你不确定是否会调用到其他包的画,像上文用到的dplyr::select会直接调用我们想要的select。

节省算力小技巧

因子化

很多时候,我们存储的数据并不只是值,也有可能是文字,其中,有很多时候属于类别,比如男女,职业等,这个时候其实我们主要的需求是区分,而不是用这个值,自然也希望代码可以像我们一样,用起来简单。这个时候就可以对该列数据因子化,把他转换为分类变量,相当于把中文转换成了数字,这样会更好区分,所用到的内存也会更少。

按类别赋予值

与因子化的核心思想一样,都是通过节省代码判断中文的时间,只不过不同的是,我们可以新建一列,在筛选的同时先赋予一个等同于其类别的数字,方便在后面调用分类的时候用创建的新列,从而节省算力,比如:

lab_base $test_new <- 0
lab_base[grep("医生|科学家|植物学家",lab_base$NEW_JOB),]$test_new <- 1

这样,假如我们要筛选高科技人才时,就可以直接筛选test_new值为1的列。

函数

就像我们在其他语言中学过的类似一样,用function来执行很多需要重复的操作,可以节省算力,并大大提高我们的代码效率以及对代码的理解,但与其他语言不同的是,列表下函数的作用对象是会改变的,也就是说在写逻辑之前,不仅要想逻辑本身是否通顺,更要想清楚操作的对象是否适用于该方法,比如列表下的子列表,很多时候我们会将其转换为dataframe来操作,从而更好地处理数据,但在涉及到用function来操作列表里的内容是,用lapply来操作子列表,也会很方便,也能使其在操作完保持子列表的特性嵌套在列表中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/81133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌地图代理 | 使用 HTML 和矢量模式 API 更轻松地创建 Web 地图

在过去的一年里&#xff0c;谷歌对 Maps JavaScript API 进行了两项重要更新&#xff0c;以便更轻松地采用我们最新、最好的地图&#xff1a;HTML 地图和矢量模式 API。今天谷歌地图亚太区最大代理商之一的 Cloud Ace云一 为大家介绍一下更新的具体内容。 联系我们 - Cloud Ac…

WL-G4048 Multi-Port PCIe 4.0 Switch

系列文章目录 文章目录 系列文章目录《WL-G4048 Multi-Port PCIe 4.0 Switch数据手册》总结一、芯片介绍二、芯片规格介绍&#xff08;一&#xff09;功能指标&#xff08;二&#xff09;管理调试和监控&#xff08;三&#xff09;参考时钟&#xff08;四&#xff09;系统复位 …

召回11:地理位置召回、作者召回、缓存召回

GeoHash 召回 属于地理位置召回&#xff0c;用户可能对附近发生的事情感兴趣。GeoHash 是一种对经纬度的编码&#xff0c;地图上每个单位矩形的 GeoHash 的前几位是相同的&#xff0c;GeoHash 编码截取前几位后&#xff0c;将相同编码发布的内容按时间顺序&#xff08;先是时间…

高效批量合并Word文档的工具介绍

软件介绍 本文介绍一款专门用于批量合并Word文档的工具&#xff0c;名为批量合并word工具。 使用方法与特点 如果需要将多个Word文档合并到一个Word文档中&#xff0c;就可以使用这款工具。使用前&#xff0c;需把要合并的Word文档都放在名为“word”的文件夹下。 该软件没有…

机器学习入门之KNN算法和交叉验证与超参数搜索(三)

机器学习入门之KNN算法和交叉验证与超参数搜索&#xff08;三&#xff09; 文章目录 机器学习入门之KNN算法和交叉验证与超参数搜索&#xff08;三&#xff09;一、KNN算法-分类1. 样本距离判断明可夫斯基距离 2. KNN 算法原理3. KNN 的缺点4. KNN 的 API5. 使用 sklearn 实现 …

小刚说C语言刷题—1700请输出所有的2位数中,含有数字2的整数

1.题目描述 请输出所有的 2 位数中&#xff0c;含有数字 2 的整数有哪些&#xff0c;每行 1个&#xff0c;按照由小到大输出。 比如&#xff1a; 12、20、21、22、23… 都是含有数字 2的整数。 输入 无 输出 按题意要求由小到大输出符合条件的整数&#xff0c;每行 1 个。…

在MYSQL中导入cookbook.sql文件

参考资料&#xff1a; GitHub 项目&#xff1a;svetasmirnova/mysqlcookbook CSDN 博客&#xff1a;https://blog.csdn.net/u011868279/category_11645577.html 建库&#xff1a; mysql> use mysql Reading table information for completion of table and column names …

Scrapy框架下地图爬虫的进度监控与优化策略

1. 引言 在互联网数据采集领域&#xff0c;地图数据爬取是一项常见但具有挑战性的任务。由于地图数据通常具有复杂的结构&#xff08;如POI点、路径信息、动态加载等&#xff09;&#xff0c;使用传统的爬虫技术可能会遇到效率低下、反爬策略限制、任务进度难以监控等问题。 …

【Win32 API】 lstrcmpA()

作用 比较两个字符字符串&#xff08;比较区分大小写&#xff09;。 lstrcmp 函数通过从第一个字符开始检查&#xff0c;若相等&#xff0c;则检查下一个&#xff0c;直到找到不相等或到达字符串的末尾。 函数 int lstrcmpA(LPCSTR lpString1, LPCSTR lpString2); 参数 lpStr…

代码随想录60期day38

2维背包 #include<bits/stdc.h> using namespace std;int main(){int n,bagweight;cin>>n>>bagweight;vector<int>weight(n,0);vector<int>value(n,0);for(int i 0 ; i <n;i){cin>>weight[i];}for(int j 0;j<n;j){cin>>val…

[模型部署] 1. 模型导出

&#x1f44b; 你好&#xff01;这里有实用干货与深度分享✨✨ 若有帮助&#xff0c;欢迎&#xff1a;​ &#x1f44d; 点赞 | ⭐ 收藏 | &#x1f4ac; 评论 | ➕ 关注 &#xff0c;解锁更多精彩&#xff01;​ &#x1f4c1; 收藏专栏即可第一时间获取最新推送&#x1f514;…

mac的Cli为什么输入python3才有用python --version显示无效,pyenv入门笔记,如何查看mac自带的标准库模块

根据你的终端输出&#xff0c;可以得出以下结论&#xff1a; 1. 你的 Mac 当前只有一个 Python 版本 系统默认的 Python 3 位于 /usr/bin/python3&#xff08;这是 macOS 自带的 Python&#xff09;通过 which python3 确认当前使用的就是系统自带的 Pythonbrew list python …

Java注解详解:从入门到实战应用篇

1. 引言 Java注解&#xff08;Annotation&#xff09;是JDK 5.0引入的一种元数据机制&#xff0c;用于为代码提供附加信息。它广泛应用于框架开发、代码生成、编译检查等领域。本文将从基础到实战&#xff0c;全面解析Java注解的核心概念和使用场景。 2. 注解基础概念 2.1 什…

前端方法的总结及记录

个人简介 &#x1f468;‍&#x1f4bb;‍个人主页&#xff1a; 魔术师 &#x1f4d6;学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全栈发展 &#x1f6b4;个人状态&#xff1a; 研发工程师&#xff0c;现效力于政务服务网事业 &#x1f1e8;&#x1f1f3;人生格言&…

组件导航 (HMRouter)+flutter项目搭建-混合开发+分栏效果

组件导航 (Navigation)flutter项目搭建 接上一章flutter项目的环境变量配置并运行flutter 1.flutter创建项目并运行 flutter create fluter_hmrouter 进入ohos目录打开编辑器先自动签名 编译项目-生成签名包 flutter build hap --debug 运行项目 HMRouter搭建安装 1.安…

城市排水管网流量监测系统解决方案

一、方案背景 随着工业的不断发展和城市人口的急剧增加&#xff0c;工业废水和城市污水的排放量也大量增加。目前&#xff0c;我国已成为世界上污水排放量大、增加速度快的国家之一。然而&#xff0c;总体而言污水处理能力较低&#xff0c;有相当部分未经处理的污水直接或间接排…

TCP/IP 知识体系

TCP/IP 知识体系 一、TCP/IP 定义 全称&#xff1a;Transmission Control Protocol/Internet Protocol&#xff08;传输控制协议/网际协议&#xff09;核心概念&#xff1a; 跨网络实现信息传输的协议簇&#xff08;包含 TCP、IP、FTP、SMTP、UDP 等协议&#xff09;因 TCP 和…

5G行业专网部署费用详解:投资回报如何最大化?

随着数字化转型的加速&#xff0c;5G行业专网作为企业提升生产效率、保障业务安全和实现智能化管理的重要基础设施&#xff0c;正受到越来越多行业客户的关注。部署5G专网虽然前期投入较大&#xff0c;但通过合理规划和技术选择&#xff0c;能够实现投资回报的最大化。 在5G行…

网页工具-OTU/ASV表格物种分类汇总工具

AI辅助下开发了个工具&#xff0c;功能如下&#xff0c;分享给大家&#xff1a; 基于Shiny开发的用户友好型网页应用&#xff0c;专为微生物组数据分析设计。该工具能够自动处理OTU/ASV_taxa表格&#xff08;支持XLS/XLSX/TSV/CSV格式&#xff09;&#xff0c;通过调用QIIME1&a…

【超分辨率专题】一种考量视频编码比特率优化能力的超分辨率基准

这是一个Benchmark&#xff0c;超分辨率视频编码&#xff08;2024&#xff09; 专题介绍一、研究背景二、相关工作2.1 SR的发展2.2 SR benchmark的发展 三、Benchmark细节3.1 数据集制作3.2 模型选择3.3 编解码器和压缩标准选择3.4 Benchmark pipeline3.5 质量评估和主观评价研…