1、變量的重命名
(1)交互式編輯器修改變量名
若要修改數據集x中的變量名,鍵入fix(x)即可打開交互式編輯器的界面。若數據集為矩陣或數據框,單擊交互式編輯器界面中對應要修改的變量名,可手動輸入新的變量名;若數據集為列表,則交互式編輯界面為一個記事本,只要修改“.Names”之后對應的變量名,即可修改變量名。
(2)rename()函數修改變量名
可用於修改數據框和列表的變量名,但不能用於修改矩陣的變量名 格式:dataframe<-rename(dataframe,c(oldname="newname",...))
library(reshape)
rename(score,c(pl="Chinese"))
rename(score.list,c(pl="chinese))
(3)names()函數修改變量名
可用於修改數據框和列表的變量名,但不能用於修改矩陣的變量名 格式:names()<-value
names(score)[5]="chinese"
(4)colnames()函數和rownames()函數修改變量名
R中用於修改矩陣行名和列名的函數,也可用於修改數據框的行數和列數 格式:colnames(x)<-value rownames(x)<-value
rownames(score)<-letters[1:4]
2、缺失值分析
is.na(x)——返回一個與x等長的邏輯變量
anyNA(x,recursive=FALSE)——判斷數據中是否存在缺失值 ,若存在就返回TRUE
na.omit(x)——刪除含有缺失值的觀測
complete.cases(x)——返回一個邏輯向量,不存在缺失值的行為值為TRUE
3、數據排序
(1)sort ——對向量進行排序,返回排序后的向量
格式:sort(x,na.last=NA,decreasing=FALSE)
sort(score$math)
(2)rank——返回向量中每個數值對應的秩
格式:rank(x,na.last=TRUE,ties.method=c("average","first","random","max","min"))
x<-c(3,4,2,5,5,3,8,9)
rank(x,ties.method="first")
(3)order——對數據進行排序
格式:order(x,na.last=TRUE,decreasing=FALSE)
data_frame[order(data_frame$v2,data_frame$v2,)]
4、隨機抽樣
(1)srswr()——放回簡單隨機抽樣
格式:srswr(n,N)——表示在總體N中有放回的抽取n個樣本,返回一個長度為N的向量,每個向量的值表示抽取的次數
library(sampling)
s<-srswr(10,26)
(2)srswor()——不放回簡單隨機抽樣 格式:srswor()——表示在總體N中有放回的抽取n個樣本,返回一個長度為N的向量,每個向量的值表示抽取的次數library(sampling)
s<-srswor(10,26)
(3)sample()——實現放回簡單抽樣和不放回簡單隨機抽樣,也可對數據進行隨機分組 格式:sample(x, size,replace=FALSE,prob=NULL)——隨機抽取x中的數,size為抽取樣本數,replace=FALSE為不放回簡單隨機抽樣,prob為權重分量 sample(LETTERS,5,prob=c(0.7,0.3),replace=TRUE) 5、數值運算函數 (1)數學函數 abs(x)、sqrt(x)、ceiling(x) (2)統計函數 mean(x)、median(x)、sd(x)、var(x)、quantile(x,probs)、range(x)、sum(x)、min(x)、max(x)、scale(x,center=TRUE,scale=FALSE)、diff(x,lag=n) difftime(time1,time2,units=c("auto","secs","mins","hours","days","weeks")) (3)概率函數 6、字符串函數 (1)grep()——字符串查詢,返回結果為匹配項的下標 格式:grep(pattern,x,ignore.case=FALSE,perl=FALSE,value=FALSE,fixed=FALSE,useBytes=FALSE,invert=FALSE) txt=c("whatever" ,"is","worth","doing","is","worth","doing","well") grep("e.*r|wo",txt,fixed=FALSE) #返回一個 邏輯向量 grepl("e.*r|wo",txt,fixed=FALSE) #gregexpr()函數 返回一個列表,結果包括匹配項的起始位置及匹配項長度 grepl("e.*r|wo",txt) (2)sub()——對第一個滿足條件的匹配做替換 格式:sub(pattern,replacement,x,ignore.case=FALSE,fixed=FALSE) txt=c("whatever" ,"is","worth","doing","is","worth","doing","well") sub("[tr]","k",txt) (3)gsub()——把所有滿足條件的匹配都做替換 格式:gsub(pattern,replacement,x,ignore.case=FALSE,fixed=FALSE) txt=c("whatever" ,"is","worth","doing","is","worth","doing","well") gsub("[tr]","k",txt) (4)strsplit()——字符串拆分 格式:strsplit(x,split,fixed=FALSE,perl=FALSE,useBytes=FALSE) data<-c("2017年1月1日","2018年1月1日") strsplit(data,"年") (5)paste()——字符串連接 格式:paste(...,sep="",collapse=NULL) paste("AB",1:5,sep="") 7、文本分詞 (1)RWordseg包 常用文本分詞函數:insertWords(x,save=TRUE)——向詞庫中導入新詞匯,save=TRUE時,表示把操作記錄下來,下回啟動能直接用 deleteWords(x)——從詞庫中刪除詞匯 getOption("isNameRecognition")——查看人名識別功能的狀態 segment.options("isNameRecognition"=TRUE)——設置人名識別功能的狀態 listDict()——查看詞典 installDict()——添加用戶自定義的詞典 uninstallDict()——卸載用戶自定義的詞典 segmentCN()——中文分詞 (2)jiebaR包 分詞: worker()函數初始化分詞引擎 worker(type="mix",dict=DICTPATH,hmm=HMMPATH,user=USERPATH,idf=IDFPATH,stop_word=STOPPATH,write=T,qmax=20,encoding="UTF-8",detect=T,symbol=F,lines=le+0.5.output=NULL,bylines=F) 初始化分詞引擎后,使用分詞運算符“<=”或者segment()函數進行分詞。 segment(code,jiebar,mod=NULL) library(jiebaR) mixseg=worker() #默認mix分詞引擎 mpseg=worker(type="mp") #mp分詞引擎 hmmseg=worker(type="hmm") #hmm分詞引擎word="人們都說桂林山水甲天下"
mixseg<=word
mpseg<=word
hmmseg<=word
segment(word,mixseg)
詞性標注:
可以使用<=.tagger或者tag來進行分詞和詞性標注
關鍵詞提取和Simhash計算:需要將worker()中的type參數設置為“keywords”或“Simhash”,並使用topn參數設置關鍵詞個數
keys<=worker("keywords",topn=1)
keys<=word
8、apply函數族
(1)apply()——對數組或者矩陣的一個維度使用函數生成列表、數組、或者向量
格式:apply(x,MARGIN,FUN,...) MARGIN=1表示矩陣行 MARGIN=2表示矩陣列
x<-matrix(1:20,ncol=4)
x
apply(x,1,mean)
(2)lapply()——對x的每一個元素運用函數,生成一個與元素個數相同的值列表
格式:lapply(x,FUN,...)
(3)sapply()——對x的每一個元素運用函數,生成一個與元素個數相同的值列表
格式:sapply(x,FUN,..,simplify=TRUE,USE.NAMES=TRUE)
(4)tapply()——對不規則陣列使用向量,即對一組非空值按照一組確定因子進行相應計算
格式:tapply(x,INDEX,FUN,...simplify=TRUE)
height<-c(174,165,189,180,165)
sex<-c("M","F","M","M","F")
tapply(height,sex,mean)
(5)mapply()
9、數據整合
(1)數據匯總統計
aggregate(x,by,FUN)
(2)數據融合
melt(data,varnames,value.name="value",na.rm=FALSE)
(3)數據重塑
cast(data,formula,fun.aggregate=NULL,...)
10、控制流
(1)if/else語句
if(condition) {expr1} else{expr2}
(2)switch語句
switch(expression,list)
(3)循環語句
for(name in expr1) {expr2}
while(cond) {expr}
repeat expr 或repeat{if(cond) {break}}
11、函數的編寫
myfunction<-function(arglist){
statements
return (object)
}