1. 程式人生 > >R教材4 高階資料管理

R教材4 高階資料管理

  1. 數值與字元處理函式
    1. 數學函式,物件非單個數值時,會作用於每個數值
      1. 絕對值abs()
      2. 平方根sqrt()
      3. 舍入小數round(,digits=)
      4. 對數
        1. log(x,base=n)以n為底
        2. log()以e為底
        3. log10()以10為底
      5. 指數exp(x),以e為底指數
    2. 統計函式na.rm=T,計算時移除NA;trim=0.05,去除了前後5%的資料再計算,當沒有足夠的資料時,不會去掉極值
      1. 均值mean()
      2. 標準差sd()
      3. 方差var()
      4. 分位數quantile(x,probs=c()),probs分位點
      5. 中心化、標準化scale(x,center=T,scale=T),標準化即z分數
    3. 概率函式
      1. 不同函式的字首
        1. 密度函式d,即分佈的y值
        2. 分佈函式p,求面積,p-(z),標準分佈下的面積
        3. 分位數函式q,q-(0.9分位點,……),某分佈下的分位點0.9等
        4. 生成隨機數r
      2. 分佈
        1. 指數分佈exp
        2. 對數分佈logis
        3. 正態分佈norm
        4. t分佈t
        5. 均勻分佈unif
      3. 設定隨機數種子
        1. set.seed(x)……,x種子下的隨機函式結果
    4. 字元處理函式
      1. 字元數量nchar()
      2. 提取或替換字元substr(物件,from,to)
      3. 在X中搜索模式grep(pattern,x,fixed=F),fixed=F模式為正則表示式,T模式為文字字串
      4. 連線字串paste(……,sep=""),sep每個連線的分隔
      5. toupper、tolower,大小寫轉換
    5. 其他函式
      1. 生成序列seq(from,to,by)
      2. 重複rep(x,n)
      3. 將連續變數分割為n個水平的因子cut(x,n),ordered_result=T建立有序因子
      4. 建立美觀的分割點pretty(x,n),選取n+1個等間距的取整值
      5. 連線……中的物件,並將其輸出到螢幕或檔案上cat(……,file="",append=F),cat輸出連線物件會對每個物件用空格分開,甚至是.,所以作為句號必須在前面加上\b
    6. 函式用於矩陣和資料框:
      1. 針對維度apply(x,margin,FUN),margin=1表示行,2表示列
      2. split(物件,分組屬性),返回是列表;可以多重分組,用list()來標明
      3. apply:lapply、sapply、tapply只能針對一個屬性的分組進行函式
        1. apply(X, MARGIN, FUN, ...),x是陣列、矩陣(資料框);margin=1|2,對行|列操作;fun函式
        2. lapply(split,FUN)結合split使用,lapply針對列表中的每個元素使用fun,可以沒有margin,返回列表
        3. sapply同上,返回的是更緊湊的格式
        4. tapply(物件,分組屬性,FUN)簡化了split函式,返回列表
    7. 控制流
      1. for(var in seq(from,to,by)) {}
      2. while(cond) {}
      3. 條件執行
        1. if(cond) …… else ……
        2. ifelse(cond,T-stat,F-stat),R語言特有,輸出結果為向量,對每個向量中的元素進行判斷
        3. switch(i,……),……是i的可能值繫結的語句
      4. 使用者自編函式最好有一個表示式來捕獲錯誤輸入;所有的輸出只能在函式中才有意義,所以用return
    8. 整合與重構
      1. 轉置t()
      2. 整合aggregate(x, by, FUN, ..., ),x可以是多個屬性的資料,by分組依據(相同分組屬性值為一組),FUN是用來計算新觀測中的值,by必須是list形式by=list(),by中的變數可以可以自定義名稱;或者aggregate(a~b, x, FUN, ..., ),b為標識,a為整合量
      3. reshape2包
        1. 融合melt(x,id=c()),id即主鍵,結果是主鍵下的屬性和屬性值
        2. 重鑄dcast(melt,formula,fun.aggregate),melt為已融合資料,formula為結果結構row1,……~col1,……,fun為資料整合函式(可選的)