R action 4

20171205(從有道遷移)

基本數(shù)據(jù)管理

  1. 創(chuàng)建新變量

    1. 格式:變量名←表達(dá)式,“表達(dá)式”部分可以包含多種運(yùn)算符和函數(shù)
    2. 算術(shù)運(yùn)算符可用于構(gòu)造公式(formula)
    運(yùn)算符 描述
    +
    -
    *
    /
    ^或** 求冪
    x%%y 求余(x mod y)。5%%2的結(jié)果為1
    x%/%y 整數(shù)除法。5%/%2的結(jié)果為2
  2. 變量重編碼

    1. 重編碼涉及根據(jù)同一個變量和/或其他變量的現(xiàn)有值創(chuàng)建新值的過程。
      • 將一個連續(xù)型變量修改為一組類別值;
      • 將誤編碼的值替換為正確值;
      • 基于一組分?jǐn)?shù)線創(chuàng)建一個表示及格/不及格的變量。
    2. 要重編碼數(shù)據(jù),可以使用R中的一個或多個邏輯運(yùn)算符,邏輯運(yùn)算符
    邏輯運(yùn)算符 描述
    < 小于
    <= 小于或等于
    > 大于
    >= 大于或等于
    == 嚴(yán)格等于*
    != 不等于
    !x 非x
    x y x或y
    x & y X和y
    isTRUE(x) 測試x是否為TRUE
  3. 語句variable[condition] <- expression將僅在condition的值為TRUE時執(zhí)行賦值

    1. 寫法1:
    ageType[age>=55 && age<75]<-"Middle Ages"
    
    1. 寫法2,需要注意的是,在大括號里面,如果執(zhí)行語句不換行的話,語句之間需要用逗號隔開
    leadership <- within(leadership,{ageType=NA
                     ageType[age > 85]<-"Elder"
                     ageType[age>=55 && age<75]<-"Middle Ages"
                     ageType[age<55]<-"Young"})
    
  4. 變量的重命名

    1. 調(diào)出可編輯窗口:fix(變量名)
    2. reshape包中有一個rename()函數(shù),可用于修改變量名。rename()函數(shù)的使用格式為:rename(dataframe,c(oldname="newname",oldname="newname",...)
    3. 通過names()函數(shù)來重命名變量
    names(leadership)[2] <- "testDate"
    
  5. 缺失值

    1. 缺失值以符號NA(Not Available,不可用)表示,缺失值被認(rèn)為是不可比較的;
    2. 不可能出現(xiàn)的值(例如,被0除的結(jié)果)通過符號NaN(Not a Number,非數(shù)值)來表示;
    3. 檢測缺失值函數(shù):is.na(),該函數(shù)作用與一個對象時,函數(shù)結(jié)果返回一個相同大小的對象
    4. ==在分析過程中排除缺失值,多數(shù)的數(shù)值函數(shù)都擁有一個na.rm=TRUE選項(xiàng),可以在計算之前移除缺失值并使用剩余值進(jìn)行計算==
    y <- sum(x,na.rm=TRUE)
    
    1. ==通過函數(shù)na.omit()移除所有含有缺失值的觀測。na.omit()可以刪除所有含有缺失數(shù)據(jù)的行==
    newdata <- na.omit(leadership)
    
  6. 日期值

    1. 日期值通常以字符串的形式輸入到R中,然后轉(zhuǎn)化為以數(shù)值形式存儲的日期變量;
    2. 函數(shù)as.Date()用于執(zhí)行這種轉(zhuǎn)化。其語法為as.Date(x, "input_format"),其中x是字符型數(shù)據(jù),input_format則給出了用于讀入日期的適當(dāng)格式
    3. 日期格式
    符號 含義 示例
    %d 數(shù)字表示的日期(0~31) 01~31
    %a 縮寫的星期名 Mon
    %A 非縮寫星期名 Monday
    %m 月份(00~12) 00~12
    %b 縮寫的月份 Jan
    %B 非縮寫月份 January
    %y 兩位數(shù)的年份 07
    %Y 四位數(shù)的年份 2007
    1. 日期值的默認(rèn)輸入格式為yyyy-mm-dd
    mydates <- c("01/05/1965","08/16/1975")
    
    strDates <- c("01/05/1965","08/16/1975")
    mydates2 <- as.Date(c,"%m/%d/%Y")  ---使用mm/dd/yyyy的格式讀取數(shù)據(jù)
    
    
    1. Sys.Date()可以返回當(dāng)天的日期,而date()則返回當(dāng)前的日期和時間
    2. 以使用函數(shù)format(x, format="output_format")來輸出指定格式的日期值,并且可以提取日期值中的某些部分
    today <- Sys.Date()
    format(today,format="%A %B %d %y")
    
    1. 在日期值上執(zhí)行算術(shù)運(yùn)算
    2. 使用函數(shù)difftime()來計算時間間隔,并以星期、天、時、分、秒來表示
    chris <- as.Date("1985-04-02")
    difftime(today,chris,units="week") ---units應(yīng)當(dāng)是“auto”, “secs”, “mins”, “hours”, “days”, “weeks”其中的一個
    
    
    1. 將日期轉(zhuǎn)換為字符型變量:
    strDates <- as.character(mydates2)
    
  7. 類型轉(zhuǎn)換

    1. 類型轉(zhuǎn)換函數(shù),名為is.datatype()這樣的函數(shù)返回TRUE或FALSE,而as.datatype()這樣的函數(shù)則將其參數(shù)轉(zhuǎn)換為對應(yīng)的類型
    判斷 轉(zhuǎn)換
    is.numeric() as.numeric()
    is.character() as.character()
    is.vector() as.vector()
    is.matrix() as.matrix()
    is.data.frame() as.data.frame()
    is.factor() as.factor()
    is.logical() as.logical()
  8. 數(shù)據(jù)排序

    1. 使用order()函數(shù)對一個數(shù)據(jù)框進(jìn)行排序。
    2. 默認(rèn)的排序順序是升序。
    3. 在排序變量的前邊加一個減號即可得到降序的排序結(jié)果
    newdata <- leadership[order(leadership$age),]
    newdata2 <- leadership[order(leadership$age,leadership$q1),]
    newdata3 <- leadership[order(leadership$age,-leadership$q1),]
    
    
  9. 數(shù)據(jù)集的合并

    1. 添加列
      1. 橫向合并兩個數(shù)據(jù)框(數(shù)據(jù)集),使用merge()函數(shù)
      2. 在多數(shù)情況下,兩個數(shù)據(jù)框是通過一個或多個共有變量進(jìn)行聯(lián)結(jié)的(即一種內(nèi)聯(lián)結(jié),inner join)。
      total <- merge (dataframe1,dataframe2,by="id")
      total <- merge (dataframe1,dataframe2,by=c("id","country"))
      
      1. 如果要直接橫向合并兩個矩陣或數(shù)據(jù)框,并且不需要指定一個公共索引,那么可以直接使用cbind()函數(shù):
      total <- cbing(a,b)
      
      1. cbing()函數(shù)將橫向合并對象A和對象B。為了讓它正常工作,每個對象必須擁有相同的行數(shù),且要以相同順序排序。
    2. 添加行
      1. 要縱向合并兩個數(shù)據(jù)框(數(shù)據(jù)集),使用rbind()函數(shù)
      total <- rbing(a,b)
      
      1. 兩個數(shù)據(jù)框必須擁有相同的變量,不過它們的順序不必一定相同。
      2. 如果dataframeA中擁有dataframeB中沒有的變量,請?jiān)诤喜⑺鼈冎白鲆韵履撤N處理:
        • 刪除dataframeA中的多余變量;
        • 在dataframeB中創(chuàng)建追加的變量并將其值設(shè)為NA(缺失)。
      3. 縱向聯(lián)結(jié)通常用于向數(shù)據(jù)框中添加觀測。
  10. 數(shù)據(jù)集取子集

    1. 選入(保留)變量:從一個大數(shù)據(jù)集中選擇有限數(shù)量的變量來創(chuàng)建一個新的數(shù)據(jù)
      1. 數(shù)據(jù)框中的元素是通過dataframe[row indices, column indices]這樣的記號來訪問的??梢匝赜眠@種方法來選擇變量
      2. 使用paste()函數(shù)
    2. 剔除(丟棄)變量: 類似myvars <- names(leadership) %in% c("q3","q4")
    3. 選入觀測:選入或剔除觀測(行)通常是成功的數(shù)據(jù)準(zhǔn)備和數(shù)據(jù)分析的一個關(guān)鍵方面
    4. subset函數(shù):是選擇變量和觀測
    newdata <- subset(leadership, age >= 35 | age < 24,select=c(q1, q2, q3, q4))
    newdata <- subset(leadership, gender=="M" & age > 25,select=gender:q4)
    
    
    1. 隨機(jī)抽樣
      1. sample()函數(shù)能夠從數(shù)據(jù)集中(有放回或無放回地)抽取大小為n的一個隨機(jī)樣本; sample()函數(shù)會返回隨機(jī)抽樣得到的元素,之后即可用于選擇數(shù)據(jù)框中的行。
      2. 格式:
      mysample <- leadership[sample[1:nrow(leadership),3,replace=FALSE],]
      
      1. sample()函數(shù)中的第一個參數(shù)是一個由要從中抽樣的元素組成的向量。在這里,這個向量是1到數(shù)據(jù)框中觀測的數(shù)量
      2. 第二個參數(shù)是要抽取的元素數(shù)量;
      3. 第三個參數(shù)表示無放回抽樣。
    2. 使用 SQL 語句操作數(shù)據(jù)框,sqldf包
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 我們的掌握目標(biāo): ●操縱日期和缺失值 ●熟悉數(shù)據(jù)類型的轉(zhuǎn)換 ●變量的創(chuàng)建和重編碼 ●數(shù)據(jù)集的排序、合并與取并集 ●...
    小白日常筆記閱讀 896評論 0 0
  • 第四章 基本數(shù)據(jù)管理 用到的數(shù)據(jù) leadership mydata 1. stringAsFactor=FAL...
    拿鐵不加糖_Latte閱讀 4,326評論 0 0
  • 為了解決感興趣的問題,我們首先必須解決一些數(shù)據(jù)管理方面的問題。 4.2 創(chuàng)建新變量 在典型的研究項(xiàng)目中,你可能需要...
    在雨中跳舞閱讀 1,845評論 2 1
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,922評論 0 13
  • 冬至快樂?? 大家有吃餃子嗎?吃餃子的時候別忘了陪陪家人哦 今天是日更的第四十五天啦,時間過的很快,其實(shí)堅(jiān)持做一件...
    喵哈小姐閱讀 218評論 0 0

友情鏈接更多精彩內(nèi)容