R語言變量級(jí)別的數(shù)據(jù)處理操作
變量級(jí)別的數(shù)據(jù)處理無非是對(duì)變量的增刪改查。
增
即增加新的變量
R語言中,增加一個(gè)新變量形式語句如下:
變量名 <- 表達(dá)式
表達(dá)式可以包含多種運(yùn)算符和函數(shù)。常見運(yùn)算符包括:
運(yùn)算符 | 描述 |
---|---|
+ | 加 |
- | 減 |
* | 乘 |
/ | 除 |
^或** | 求冪 |
x%%y | 求余(x mod y)。5%%2的結(jié)果為1。 |
x%/%y | 整數(shù)除法。5%/%2的結(jié)果為2。 |
示例:
#創(chuàng)建一個(gè)數(shù)據(jù)框 mydata <- data.frame(x1 = c(2,2,6,4), + x2 = c(3,4,2,8)) mydata x1 x2 2 3 2 4 6 2 4 8 #綁定mydata attach(mydata) #為mydata數(shù)據(jù)框增加一個(gè)sum變量 mydata$sum <- x1 + x2 #為mydata數(shù)據(jù)框增加一個(gè)mean變量 mydata$mean <- (x1+x2)/2 mydata x1 x2 sum mean 2 3 5 2.5 2 4 6 3.0 6 2 8 4.0 4 8 12 6.0 #解除綁定 detach(mydata) #用transform函數(shù)可以達(dá)到同樣效果 mydata <- transform(mydata,sumx = x1+x2,meanx = (x1+x2)/2) mydata x1 x2 sum mean sumx meanx 2 3 5 2.5 5 2.5 2 4 6 3.0 6 3.0 6 2 8 4.0 8 4.0 4 8 12 6.0 12 6.0
attach與detach函數(shù)用于綁定和解除數(shù)據(jù)集,以簡(jiǎn)化數(shù)據(jù)處理過程。如果不使用二者,生成sum變量,則每個(gè)變量名之前需要加上數(shù)據(jù)集名稱+$符號(hào)。
使用transform函數(shù),語法格式為transform(數(shù)據(jù)集名稱,變量名=表達(dá)式)
隨著R語言的發(fā)展出現(xiàn)了tidyverse系列包可以進(jìn)行完整的數(shù)據(jù)分析流程。本基礎(chǔ)教程以傳統(tǒng)方法為主,tidyverse系列日后涉及。
刪
即刪除不需要的變量或選擇需要的變量。
#將R語言自帶鳶尾花數(shù)據(jù)集賦值給data data <- iris #查看前5行 head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 5.1 3.5 1.4 0.2 setosa 4.9 3.0 1.4 0.2 setosa 4.7 3.2 1.3 0.2 setosa 4.6 3.1 1.5 0.2 setosa 5.0 3.6 1.4 0.2 setosa 5.4 3.9 1.7 0.4 setosa #選擇第3到5的變量,即刪除1到2的變量 data <- data[,c(3:5)] #查看新的數(shù)據(jù) head(data) Petal.Length Petal.Width Species 1.4 0.2 setosa 1.4 0.2 setosa 1.3 0.2 setosa 1.5 0.2 setosa 1.4 0.2 setosa 1.7 0.4 setosa #生成一個(gè)包含變量名字的向量vars vars <- c('Sepal.Width','Petal.Length') #將R語言自帶鳶尾花數(shù)據(jù)集賦值給data data <- iris #從data數(shù)據(jù)集選擇包含vars內(nèi)變量的數(shù)據(jù) data <- data[vars] #查看前5行 head(data) Sepal.Width Petal.Length 3.5 1.4 3.0 1.4 3.2 1.3 3.1 1.5 3.6 1.4 3.9 1.7 #將R語言自帶鳶尾花數(shù)據(jù)集賦值給data data <- iris #使用%in%判斷data內(nèi)的變量名是否為Sepal.Length,是返回TRUE,否則返回FALSE。賦值給myvars myvars <- names(data)%in%c('Sepal.Length') #!myvars反向選擇,生成不包含Sepal.Length變量的數(shù)據(jù)集newdata newdata <- data[!myvars] #查看前5行 head(newdata) Sepal.Width Petal.Length Petal.Width Species 3.5 1.4 0.2 setosa 3.0 1.4 0.2 setosa 3.2 1.3 0.2 setosa 3.1 1.5 0.2 setosa 3.6 1.4 0.2 setosa 3.9 1.7 0.4 setosa
改
包括對(duì)變量的值的修改和對(duì)變量的類型的修改。兩者有時(shí)存在某些共變,如連續(xù)變量離散化就是為將連續(xù)變量類型轉(zhuǎn)化為分類變量(因子)類型。
變量的值的修改(重編碼)包括連續(xù)變量離散化、分類變量取值合并。
可以使用R中的一個(gè)或多個(gè)邏輯運(yùn)算符重編碼數(shù)據(jù)。邏輯運(yùn)算符表達(dá)式返回TRUE或FALSE。
運(yùn)算符 | 描述 |
---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
!x | 非x |
x豎線y | x或y |
x&y | x和y |
isTRUE(x) | 測(cè)試x是否為TRUE |
x豎線y為x|y,本文章編碼顯示問題才用豎線代替|
變量修改的語法為variable[condition]<-expression
其中,variable為變量名,condition為條件,expression為賦值。
在condition的值為TRUE時(shí)執(zhí)行賦值。
示例:
#首先生成一個(gè)數(shù)據(jù)框 age <- c(15,18,59,48,26,58,74,85,99,52) sex <- c(1,2,1,2,1,1,1,2,2,1) ship <- data.frame(age,sex) ship age sex 15 1 18 2 59 1 48 2 26 1 58 1 74 1 85 2 99 2 52 1 #將年齡取值99視為缺失值NA ship$age[ship$age==99] <- NA #將年齡大于75的取值為Elder,賦值給agecat變量。 ship$agecat[ship$age>75] <- 'Elder' #將年齡介于55-75之間的取值為Middle Aed,賦值給agecat變量。 ship$agecat[ship$age>=55 & ship$age<=75] <- 'Middle Aged' #將年齡小于55的取值為Young,賦值給agecat變量。 ship$agecat[ship$age<55] <- 'Young' ship age sex agecat 15 1 Young 18 2 Young 59 1 Middle Aged 48 2 Young 26 1 Young 58 1 Middle Aged 74 1 Middle Aged 85 2 Elder NA 2 <NA> 52 1 Young #合并分類變量取值 #將agecat為Elder的取值為TRUE,賦值給isElder變量 ship$isElder[ship$agecat=='Elder'] <- TRUE #將agecat不是Elder的取值為FALSE,賦值給isElder變量 ship$isElder[ship$agecat !='Elder'] <- FALSE ship age sex agecat isElder 15 1 Young FALSE 18 2 Young FALSE 59 1 Middle Aged FALSE 48 2 Young FALSE 26 1 Young FALSE 58 1 Middle Aged FALSE 74 1 Middle Aged FALSE 85 2 Elder TRUE NA 2 <NA> NA 52 1 Young FALSE
判斷 | 轉(zhuǎn)換 |
---|---|
is.numeric() | as.numeric() |
is.character() | as.character() |
is.factor() | as.factor() |
某些R函數(shù)需要指定數(shù)據(jù)集類型,as.datatype()函數(shù)可以使數(shù)據(jù)轉(zhuǎn)換為所要求的的格式。
查
查看變量類型,使用上述表格中判斷函數(shù)或str()函數(shù)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語言中向量和矩陣簡(jiǎn)單運(yùn)算的實(shí)現(xiàn)
這篇文章主要介紹了R語言中向量和矩陣簡(jiǎn)單運(yùn)算的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03R語言 實(shí)現(xiàn)將factor轉(zhuǎn)換成numeric方法
這篇文章主要介紹了R語言 實(shí)現(xiàn)將factor轉(zhuǎn)換成numeric方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03詳解R語言中生存分析模型與時(shí)間依賴性ROC曲線可視化
這篇文章主要介紹了R語言中生存分析模型與時(shí)間依賴性ROC曲線可視化,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03R語言數(shù)據(jù)框的合并實(shí)現(xiàn)示例
有時(shí)數(shù)據(jù)集來自多個(gè)地方,我們需要將兩個(gè)或多個(gè)數(shù)據(jù)集合并成一個(gè)數(shù)據(jù)集,本文主要介紹了R語言數(shù)據(jù)框的合并實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02R語言對(duì)Web數(shù)據(jù)操作實(shí)例
在本篇文章里小編給大家整理的是一篇關(guān)于R語言對(duì)Web數(shù)據(jù)操作實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-05-05R語言實(shí)現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程
Python語言越來越流行,尤其是在機(jī)器學(xué)習(xí)與深度學(xué)習(xí)等領(lǐng)域,但是R語言在數(shù)據(jù)分析與可視化方面仍然具有絕對(duì)的優(yōu)勢(shì),下面這篇文章主要給大家介紹了關(guān)于R語言實(shí)現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程,需要的朋友可以參考下2022-11-11R語言讀取excel數(shù)據(jù)的方法(兩行命令)
這篇文章主要介紹了R語言讀取excel數(shù)據(jù)的方法(兩行命令),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03