R語(yǔ)言變量級(jí)別的數(shù)據(jù)處理操作
變量級(jí)別的數(shù)據(jù)處理無(wú)非是對(duì)變量的增刪改查。
增
即增加新的變量
R語(yǔ)言中,增加一個(gè)新變量形式語(yǔ)句如下:
變量名 <- 表達(dá)式
表達(dá)式可以包含多種運(yùn)算符和函數(shù)。常見(jiàn)運(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ù)處理過(guò)程。如果不使用二者,生成sum變量,則每個(gè)變量名之前需要加上數(shù)據(jù)集名稱(chēng)+$符號(hào)。
使用transform函數(shù),語(yǔ)法格式為transform(數(shù)據(jù)集名稱(chēng),變量名=表達(dá)式)
隨著R語(yǔ)言的發(fā)展出現(xiàn)了tidyverse系列包可以進(jìn)行完整的數(shù)據(jù)分析流程。本基礎(chǔ)教程以傳統(tǒng)方法為主,tidyverse系列日后涉及。
刪
即刪除不需要的變量或選擇需要的變量。
#將R語(yǔ)言自帶鳶尾花數(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語(yǔ)言自帶鳶尾花數(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語(yǔ)言自帶鳶尾花數(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ì)變量的類(lèi)型的修改。兩者有時(shí)存在某些共變,如連續(xù)變量離散化就是為將連續(xù)變量類(lèi)型轉(zhuǎn)化為分類(lèi)變量(因子)類(lèi)型。
變量的值的修改(重編碼)包括連續(xù)變量離散化、分類(lèi)變量取值合并。
可以使用R中的一個(gè)或多個(gè)邏輯運(yùn)算符重編碼數(shù)據(jù)。邏輯運(yùn)算符表達(dá)式返回TRUE或FALSE。
| 運(yùn)算符 | 描述 |
|---|---|
| < | 小于 |
| <= | 小于等于 |
| > | 大于 |
| >= | 大于等于 |
| == | 等于 |
| != | 不等于 |
| !x | 非x |
| x豎線(xiàn)y | x或y |
| x&y | x和y |
| isTRUE(x) | 測(cè)試x是否為T(mén)RUE |
x豎線(xiàn)y為x|y,本文章編碼顯示問(wèn)題才用豎線(xiàn)代替|
變量修改的語(yǔ)法為variable[condition]<-expression
其中,variable為變量名,condition為條件,expression為賦值。
在condition的值為T(mén)RUE時(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 #合并分類(lèi)變量取值 #將agecat為Elder的取值為T(mén)RUE,賦值給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ù)集類(lèi)型,as.datatype()函數(shù)可以使數(shù)據(jù)轉(zhuǎn)換為所要求的的格式。
查
查看變量類(lèi)型,使用上述表格中判斷函數(shù)或str()函數(shù)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- R語(yǔ)言實(shí)現(xiàn)用cbind合并兩列數(shù)據(jù)
- R語(yǔ)言-使用ifelse進(jìn)行數(shù)據(jù)分組
- R語(yǔ)言-如何定義數(shù)據(jù)框的列名
- R語(yǔ)言-進(jìn)行數(shù)據(jù)的重新編碼(recode)操作
- R語(yǔ)言關(guān)于數(shù)據(jù)幀的知識(shí)點(diǎn)詳解
- R語(yǔ)言數(shù)據(jù)讀取以及數(shù)據(jù)保存方式
- R語(yǔ)言之xlsx包讀寫(xiě)Excel數(shù)據(jù)的操作
- r語(yǔ)言-如何將數(shù)據(jù)標(biāo)準(zhǔn)化和中心化
相關(guān)文章
R語(yǔ)言中向量和矩陣簡(jiǎn)單運(yùn)算的實(shí)現(xiàn)
這篇文章主要介紹了R語(yǔ)言中向量和矩陣簡(jiǎn)單運(yùn)算的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
R語(yǔ)言 實(shí)現(xiàn)將factor轉(zhuǎn)換成numeric方法
這篇文章主要介紹了R語(yǔ)言 實(shí)現(xiàn)將factor轉(zhuǎn)換成numeric方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
詳解R語(yǔ)言中生存分析模型與時(shí)間依賴(lài)性ROC曲線(xiàn)可視化
這篇文章主要介紹了R語(yǔ)言中生存分析模型與時(shí)間依賴(lài)性ROC曲線(xiàn)可視化,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
R語(yǔ)言數(shù)據(jù)框的合并實(shí)現(xiàn)示例
有時(shí)數(shù)據(jù)集來(lái)自多個(gè)地方,我們需要將兩個(gè)或多個(gè)數(shù)據(jù)集合并成一個(gè)數(shù)據(jù)集,本文主要介紹了R語(yǔ)言數(shù)據(jù)框的合并實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
R語(yǔ)言對(duì)Web數(shù)據(jù)操作實(shí)例
在本篇文章里小編給大家整理的是一篇關(guān)于R語(yǔ)言對(duì)Web數(shù)據(jù)操作實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-05-05
R語(yǔ)言實(shí)現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程
Python語(yǔ)言越來(lái)越流行,尤其是在機(jī)器學(xué)習(xí)與深度學(xué)習(xí)等領(lǐng)域,但是R語(yǔ)言在數(shù)據(jù)分析與可視化方面仍然具有絕對(duì)的優(yōu)勢(shì),下面這篇文章主要給大家介紹了關(guān)于R語(yǔ)言實(shí)現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程,需要的朋友可以參考下2022-11-11
R語(yǔ)言讀取excel數(shù)據(jù)的方法(兩行命令)
這篇文章主要介紹了R語(yǔ)言讀取excel數(shù)據(jù)的方法(兩行命令),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03

