R語言變量級別的數(shù)據(jù)處理操作
變量級別的數(shù)據(jù)處理無非是對變量的增刪改查。
增
即增加新的變量
R語言中,增加一個新變量形式語句如下:
變量名 <- 表達(dá)式
表達(dá)式可以包含多種運算符和函數(shù)。常見運算符包括:
運算符 | 描述 |
---|---|
+ | 加 |
- | 減 |
* | 乘 |
/ | 除 |
^或** | 求冪 |
x%%y | 求余(x mod y)。5%%2的結(jié)果為1。 |
x%/%y | 整數(shù)除法。5%/%2的結(jié)果為2。 |
示例:
#創(chuàng)建一個數(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ù)框增加一個sum變量 mydata$sum <- x1 + x2 #為mydata數(shù)據(jù)框增加一個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ù)集,以簡化數(shù)據(jù)處理過程。如果不使用二者,生成sum變量,則每個變量名之前需要加上數(shù)據(jù)集名稱+$符號。
使用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 #生成一個包含變量名字的向量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
改
包括對變量的值的修改和對變量的類型的修改。兩者有時存在某些共變,如連續(xù)變量離散化就是為將連續(xù)變量類型轉(zhuǎn)化為分類變量(因子)類型。
變量的值的修改(重編碼)包括連續(xù)變量離散化、分類變量取值合并。
可以使用R中的一個或多個邏輯運算符重編碼數(shù)據(jù)。邏輯運算符表達(dá)式返回TRUE或FALSE。
運算符 | 描述 |
---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
!x | 非x |
x豎線y | x或y |
x&y | x和y |
isTRUE(x) | 測試x是否為TRUE |
x豎線y為x|y,本文章編碼顯示問題才用豎線代替|
變量修改的語法為variable[condition]<-expression
其中,variable為變量名,condition為條件,expression為賦值。
在condition的值為TRUE時執(zhí)行賦值。
示例:
#首先生成一個數(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ù)。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語言 實現(xiàn)將factor轉(zhuǎn)換成numeric方法
這篇文章主要介紹了R語言 實現(xiàn)將factor轉(zhuǎn)換成numeric方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03R語言實現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程
Python語言越來越流行,尤其是在機器學(xué)習(xí)與深度學(xué)習(xí)等領(lǐng)域,但是R語言在數(shù)據(jù)分析與可視化方面仍然具有絕對的優(yōu)勢,下面這篇文章主要給大家介紹了關(guān)于R語言實現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程,需要的朋友可以參考下2022-11-11R語言讀取excel數(shù)據(jù)的方法(兩行命令)
這篇文章主要介紹了R語言讀取excel數(shù)據(jù)的方法(兩行命令),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03