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.pswp.cn/pingmian/81133.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81133.shtml
英文地址,請注明出處:http://en.pswp.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 質量評估和主觀評價研…