網站首頁 編程語言 正文
前言
我們知道,R語言學習,80%的時間都是在清洗數據,而選擇合適的數據進行分析和處理也至關重要,如何選擇合適的列進行分析,你知道幾種方法?
如何優雅高效的選擇合適的列,讓我們一起來看一下吧。
1. 數據描述
數據來源是我編寫的R包learnasreml
中的fm
數據集。
r$> library(learnasreml) r$> data(fm) r$> head(fm)
我們的目的:
提取fm的TreeID,Rep,dj,dm,h3,并重命名為:ID, F1, y1 , y2, y3
2. 使用R語言默認的方法:列選擇
這一種,當然是簡單粗暴的方法,想要哪一列,就把相關的列號提取出來,形成一個向量,進行操作即可。比如
r$> d1 = fm[,c(1,3,6,7,11)] r$> head(d1) TreeID Rep dj dm h3 1 80001 1 0.334 0.405 239 2 80002 1 0.348 0.393 242 3 80004 1 0.354 0.429 180 4 80005 1 0.335 0.408 301 5 80008 1 0.322 0.372 271 6 80026 1 0.359 0.450 258 r$> names(d1) = c("ID","F1","y1","y2","y3") r$> head(d1)
結果:
缺點:
這種方法,需要找到性狀所在的列號,然后還要重命名,比較麻煩。
而且,后面如果想要根據列的特征進行提取時(比如以h開頭的列,比如屬性為數字或者因子的列等等),就不能實現了。
這就要用到tidyverse的函數了,select
,rename
,都是一等一的良將。
3. tidyverse的rename函數
代碼:
a2 = fm %>% rename(ID=TreeID, F1 = Rep, y1 = dj, y2 = dm, y3 = h3)
這里,rename
只是單獨的修改名稱,并沒有提取出來。
還要使用select
進一步的提取:
4. tidyverse的select函數
如果使用select
函數,一行代碼就可以搞定:
a1 = fm %>% select(ID=TreeID, F1 = Rep, y1 = dj, y2 = dm, y3 = h3)
5. select函數注意事項
常見的坑:
注意,MASS包中也有select函數,而且優先級更高,如果你載入了MASS包,select就不能使用了。
哪怕你再次載入tidyverse包,也不行:
載入dplyr包,也不行:
MASS就是這么豪橫。
像這種情況,解決辦法有兩種:
5.1 絕對引用函數
即使用select時,要用dplyr::select
a3 = a2 %>% dplyr::select(ID,F1,y1,y2,y3)
這樣也比較麻煩。
5.2 放到環境變量中
推薦的方法:
r$> select = dplyr::select r$> a3 = a2 %>% select(ID,F1,y1,y2,y3)
推薦在載入包時,將下面代碼放在開頭,就可以肆無忌憚的應用select了,畢竟,環境變量的優先級是第一位的。
library(tidyverse) select = dplyr::select
6. 提取h開頭的列
這里,用starts_with
,會匹配開頭為h的列。
其它還有contains,匹配包含的字符,還有end_with,匹配結尾的字符。
應有盡有,無所不有。
re1 = fm %>% select(starts_with("h"))
7. 提取因子和數字的列
匹配數字的列:
re2 = fm %>% select_if(is.numeric)
匹配為因子的列:
re3 = fm %>% select_if(is.factor)
總結
原文鏈接:https://blog.csdn.net/yijiaobani/article/details/122561804
相關推薦
- 2023-01-20 python如何求兩數之和及多數之和_python
- 2022-07-08 Nginx將http轉換成https的詳細過程_nginx
- 2022-07-19 react props的特點
- 2022-09-01 C語言中static與sizeof查缺補漏篇_C 語言
- 2023-08-15 (el-Form)操作(不使用 ts):Element-plus 中 Form 表單組件校驗規則等的
- 2022-03-28 Python?format字符串格式化函數的使用_python
- 2022-05-29 MVC使用MvcPager實現分頁效果_實用技巧
- 2024-03-14 AOP切面編程,以及自定義注解實現切面
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支