1.變量轉(zhuǎn)換
- is.datatype():判斷變量種類
- as.datatype():轉(zhuǎn)換變量類型
其中嫩挤,datatype可以為numeric场斑,character刻两,vector赖草,matrix,data.frame乡翅,factor鳞疲,logical等
可以通過methods(is),methods(as)查看R中的全部is/as函數(shù)列表 - factor():將一個向量轉(zhuǎn)化為一個因子
2.變量的重命名
- edit()蠕蚜,fix()調(diào)用交互式編輯器尚洽,單擊變量名進(jìn)行修改
- names()函數(shù)
如names(object)
,則表示獲取object的名字
如names(object) <- Value
靶累,則表示將變量名修改為Value - renames()腺毫,首次使用需要安裝plyr包
renames(dataframe,c(oldname="newname",oldname="newname",……))
4.變量的缺失值
- is.na() 用于判斷對象的元素中是否有缺失值,如返回值為TRUE挣柬,則無缺失潮酒,返回FALSE,則有缺失值
- 重編碼條件元素為NA邪蛔,如下圖R代碼及輸出值急黎,其中
na.rm=TRUE
表示在計(jì)算之前移除NA,na.omit()
函數(shù)表示移除所有含NA值的觀測
> x <- seq(1,30,2)
> x
[1] 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
> x[x>=20] <- NA
> x
[1] 1 3 5 7 9 11 13 15 17 19 NA NA NA NA NA
> y <- na.omit(x)
> y
[1] 1 3 5 7 9 11 13 15 17 19
attr(,"na.action")
[1] 11 12 13 14 15
attr(,"class")
[1] "omit"
> sum(y)
[1] 100
> sum(x,na.rm = T)
[1] 100
4.向量處理
length(x):x中元素的個數(shù)
dim(x):查看變量的維數(shù);重新設(shè)置的維數(shù)勃教,例如dim(x)=c(3,2)
dimnames(x):重新設(shè)置對象的名稱
nrow(x):行的個數(shù)
ncol(x):列的個數(shù)
class(x):得到或設(shè)置x的類淤击;class(x)<-c(3,2)
unclass(x):刪除x的類
attr(x,which):得到或設(shè)置x的屬性which
attributes(obj):得到或設(shè)置obj的屬性列表
fix,edit:對數(shù)據(jù)框數(shù)據(jù)進(jìn)行表格形式的編輯
5.數(shù)據(jù)選取和操作
which.max(x):返回x中最大元素的指標(biāo)
which.min(x):返回x中最小元素的指標(biāo)
rev(x):翻轉(zhuǎn)x中所有的元素
sort(x):升序排列x中的元素;降序排列使用:rev(sort(x))
cut(x,breaks):將x分割成為幾段(或因子)故源;breaks為段數(shù)或分割點(diǎn)向量
match(x,y):返回一個和x長度相同且和y中元素相等的向量不等則返回NA
which(x==a):如果比較操作為真(TRUE),返回向量x的指針
choose(n,k):組合數(shù)的計(jì)算
na.omit(x):去除缺失值(NA)(去除相關(guān)行如果x為矩陣或數(shù)據(jù)框)
na.fail(x):返回錯誤信息污抬,如果x包含至少一個NA
unique(x):如果x為向量或數(shù)據(jù)框,返回唯一值
table(x):返回一個由x不同值個數(shù)組成的表格(通常用于整數(shù)或因子)绳军,即頻數(shù)表
subset(x,...):根據(jù)條件(...選取x中元素印机,如x$V1<10);如果x為數(shù)據(jù)框,選項(xiàng)select使用負(fù)號給出保留 或去除的變量 subset(x, subset, select, drop = FALSE, ...)
sample(x,size):不放回的隨即在向量x中抽取size個元素,選項(xiàng)replace=TRUE允許放回抽取
prop.table(x,margin=):根據(jù)margin使用分?jǐn)?shù)表示表格,wumargin時(shí)删铃,所有元素和為
6.R數(shù)據(jù)的創(chuàng)建與索引
6.1. 向量的操作
c(...)耳贬,為concatenate的縮寫,向量的創(chuàng)建
from:to :產(chǎn)生一個序列猎唁,":"有較高的優(yōu)先級咒劲;1:4+1得到"2,3,4,5"
seq() 產(chǎn)生一個向量序列,seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),length.out = NULL, along.with = NULL, ...)
rep() 重復(fù)一個對象诫隅,rep(x,times)腐魂,x是要重復(fù)的對象(例如向量c(1,2,3)),times為對象中每個元素重復(fù)的次數(shù),如times=c(9,7,3)就是將x向量的1重復(fù)9次逐纬,2重復(fù)7次蛔屹,3重復(fù)3次。
6.2. 數(shù)組(包含矩陣豁生、向量)創(chuàng)建
matrix(...):創(chuàng)立矩陣
array(x,dim=...):產(chǎn)生由x組成的數(shù)組
data.frame(...):創(chuàng)建數(shù)據(jù)框兔毒,變量可能被命名或未被命名
list(...):創(chuàng)建一個由變量組成的列表,變量可能被命名甸箱;
factor(x,levels=) 把向量x編碼稱為因子
rbind(...)以行的形式組合矩陣育叁,數(shù)據(jù)框,或其它
cbind(...)以列的方式組合芍殖,其他同rbind()
6.3. 數(shù)據(jù)切割和分離
- 向量指標(biāo)
x[n]:第n個元素
x[-n]:除了第n個元素的x
x[1:n]:前n個元素
x[-(1:n)]:第n+1至最后的元素
x[c(1,4,2)]:指定元素
x["name"]:名為"name"的元素
x[x>3]:所有大于3的元素
x[x>3 & x<5]:區(qū)間(3,5)的元素
x[x%in%c("a","and","the")]:給定組中的元素 - 列表指標(biāo)
x[n]:列表顯示元素n
x[n]:列表的第n個元素
x["name"]:名為"name"的元素
x$name :同上 - 矩陣指標(biāo)
x[i,j]:下表為(i,j)的元素
x[i,]:第i行
x[,j]:第j列
x[,c(1,3)]:第1和3列
x["name",]:名為"name"的行
x$name :同上 - 數(shù)據(jù)框指標(biāo)
x["name"]:列明為"name"的列
x$name :同上
6.4. R數(shù)學(xué)函數(shù)
- 泛用函數(shù)apply:
用法:apply(X, MARGIN, FUN, ...)豪嗽,X為一數(shù)組array,當(dāng)然包括矩陣豌骏, MARGIN為一向量龟梦,它指定函數(shù)要作用的下標(biāo)。例如對一個矩陣來說窃躲,1代表行计贰,2代表列,而c(1,2)代表行和列蒂窒。FUN作用于數(shù)組array上的函數(shù)躁倒。此函數(shù)可以是自己編寫的赎婚。當(dāng)X時(shí)一個data.frame時(shí),而不是array時(shí)樱溉,函數(shù)apply就會強(qiáng)制性的通過as.matrix或as.array將其轉(zhuǎn)化為maxtrix或array。
例子## Compute row and column sums for a matrix:
x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
col.sums <- apply(x, 2, sum)
row.sums <- apply(x, 1, sum) - 基本符號:
加(+)纬凤,減(-) 福贞,乘 (*) ,除(/)停士,冪(^) - 三角函數(shù)與其他基本數(shù)學(xué)函數(shù)
sin, cos, tan挖帘,asin, atan,atan2,log,log10,exp, - 其他
max(x):當(dāng)x為一向量時(shí),返回x中最大的元素恋技。當(dāng)x為矩陣時(shí)拇舀,返回矩陣中所有元素的最大值。當(dāng)要返回矩陣x每行或每列的最大值時(shí)蜻底,可以使用apply函數(shù)(apply(X, MARGIN, FUN, ...))骄崩,其中MARGIN表示要作用的方式,1代表行薄辅,2代表列要拂,c(1,2)代表行和列;例如apply(data,MARGIN=1,max)
min(x):返回x中最小的元素站楚,同max
rev(x):翻轉(zhuǎn)x中的所有元素
sort(x):升序排列x中的元素脱惰;降序排列使用rev(sort(x)),要得到排列的小標(biāo)用order()
choose(n,k):組合數(shù)計(jì)算
which():返回滿足條件的下表
sample(x,size):不放回的隨機(jī)在向量x中抽取size個元素選項(xiàng),replace+TRUE允許放回抽樣
rank():計(jì)算向量的秩
range(x):返回c(min(x),max(x))
sum(x):x中各元素的加和
diff(x):向量x的差分
prod(x):x中元素的連乘積
mean(x):x的均值
median(x):x的中位數(shù)
quantile(x,probs=):滿足給定概率的樣本分位數(shù)(默認(rèn)為0,0.25,0.75,1)
weight.mean(x,w):加權(quán)平均窿春,w即為weight,即權(quán)值拉一。
var(x):向量x的樣本方差;如果x是矩陣或數(shù)據(jù)框旧乞,協(xié)方差矩陣將被計(jì)算
cor(x):如果x是矩陣或數(shù)據(jù)框蔚润,相關(guān)系數(shù)矩陣將被計(jì)算
sd(x):x的標(biāo)準(zhǔn)差;sd(x)=sqrt(var(x))
var(x,y) or cov(x,y):x和y間的協(xié)方差良蛮;如果x,y為矩陣或數(shù)據(jù)框抽碌,返回x和y各列的協(xié)方差
cor(x,y):x和y的線性相關(guān)系數(shù);或者相關(guān)矩陣决瞳,如果x和y為矩陣或者數(shù)據(jù)框
round(x,n):x的約數(shù)货徙,精確到n位
log(x,base):計(jì)算x以base為基的對數(shù),默認(rèn)基為exp(1)
scale(x):如果x是一個矩陣皮胡,則中心化和標(biāo)準(zhǔn)化數(shù)據(jù)痴颊;若只標(biāo)準(zhǔn)化數(shù)據(jù),則使用選項(xiàng)center=FALSE屡贺,若只 中心化使用scale=FALSE(默認(rèn)center=TRUE, scale=TRUE)
pmin(x,y,...):x,y相比較小者蠢棱,組成新的向量
pmax(x,y,...):x,y相比較大者锌杀,組成新的向量
Re(x):復(fù)數(shù)的實(shí)部
Im(x):復(fù)數(shù)的虛部
abs(x):絕對值
Arg(x):復(fù)數(shù)角度(in radians)
Conj(x):共軛復(fù)數(shù)
fft(x):數(shù)組x的快速傅里葉變換
mvfft(x):矩陣x的每一列的傅里葉變換
factorial():計(jì)算n!
cumsum():cumulative sums
cumprod():cumulative products
D(expression(exp(x^2)),"x") :求導(dǎo)
integrate(function(x) x^2,0,1):積分
na.rm=FALSE:指定是否移除缺失值(NA)
6.5.R字符操作
str_c(..., sep = "", collapse = NULL):轉(zhuǎn)化為字符后連接向量;seq=為分割界限(一個空格為默認(rèn))泻仙;選擇collapse=可以分 割"collapse"結(jié)果
str_sub(string, start = 1L, end = -1L) :提取字符向量的子字段糕再;
str_to_lower(x):轉(zhuǎn)化為lowercase
str_to_upper(x):轉(zhuǎn)化為uppercase
x%in%table:table中匹配x元素位置組成的向量,返回值為邏輯值
str_match(string, pattern):pattern匹配字符,并返回對應(yīng)的字符string
str_extract: 從字符串中提取匹配字符
str_extract(shopping_list, "\d") # 提取數(shù)字 #提取匹配模式的第一個字符串
str_extract(shopping_list, "[a-z]+") #提取字母
str_detect(string, pattern) :檢測函數(shù)玉转,用于檢測字符串中是否存在某種匹配模式
str_detect(val, "^a"):檢查字符串向量突想,是否以a為開頭
nchar(x):字符的個數(shù)