第二講學習筆記:數據結構

第二講學習筆記

1.31 函數或指令:<-是賦值;c表示常數;mean是平均數;sd是標準方差;cor是相關性,線性關係;plot是散點圖

1.33 getwd()是查看當前工作目錄。查出當前目錄為上次設定的 "D:/用戶目錄/我的文檔";setwd()是設定當前工作目錄,用於將指令在不同的工作目錄里運行。

擴展:符號必須是英文格式的,否則無效。包括正斜杠「/」。

在tools-options-defaultworking directory里設定默認目錄。

將1.1代碼清單運行,保存在D/Rproject/project1,裡面只有兩個文件:「.Rhistory」

和「.RData」)。雙擊第一個啟動R,雙擊第二個文件啟動RStudio。

新建了一個空項目p3.生成一個柱狀圖。

輸入

source("myscript.R") 將執行包含在文件myscript.R中的R語句集合。

文本輸出

函數sink("filename") 將輸出重定向到文件filename中。默認情況下,如果文件已經存在,則它的內容將被覆蓋。

圖形輸出

bmp("filename.bmp"),最後使用 dev.off() 將輸出返回到終端。

批處理

對於Windows,則需使用:

"C:Program FilesRR-3.1.0inR.exe" CMD BATCH--vanilla--slave "c:my projectsmyscript.R"

將路徑調整為R.exe所在的相應位置和腳本文件所在位置。

P39:將輸出用為輸入:結果的重用

lm(mpg~wt, data=mtcars)——結果將顯示在屏幕上,不會保存任何信息。

lmfit <- lm(mpg~wt, data=mtcars)——創建了一個名為 lmfit 的列表對象,其中包含了分析的大量信息(包括預測值、殘差、回歸係數等)。雖然屏幕上沒有顯示任何輸出,但分析結果可在稍後被顯示和繼續使用。

summary(lmfit)——顯示分析結果的統計概要

plot(lmfit)——生成回歸診斷圖形

cook<-cooks.distance(lmfit)——計算和保存影響度量統計量

predict(lmfit,mynewdata)——在新的車身重量數據上對每加侖行駛的英里數進行預測

2.5

數據框patientdata必須導入才能使用,而數據框mtcars 是軟體自帶的,因此可以直接調用。

重點功能發現:table這個函數很實用,在access里要調用交叉參考查詢才能對列數據之間的關係進行表格描述,這裡更清楚簡潔。

P48里四次調用plot,就輸出四幅圖。

2.3.1使用鍵盤輸入數據

語句 mydata<- edit(mydata) 的一種簡捷的等價寫法是 fix(mydata) 。

在用數據編輯器時發現輸入字元時,如果是中文輸入法,但是在選項中有英文字元,這時直接回車,字元是可以輸入的,但是會有警報信息提示:在變數里加上了因子水準。而數據框內的objects並未變化,也就是說這個賦值無效。

而在console面板中鍵入函數就沒問題(用中文輸入法,找到選項中的英文。);給變數賦值的話,如果是中文形式的逗號,則反饋「 unexpected input」,如果字元未加雙引號,則反饋「object m not found」。

改用英文輸入法就可以了。

2.3.2 從帶分隔符的文本文件導入數據

mydataframe <- read.table(file, options)

默認地,read.table() 把字元變數轉化為因子,這並不一定都是我們想要的情況。比如說,很少情況下,我們才會把回答者的評論轉化成為因子。你可用多種方法去掉這個行為。加上選項stringsAsFactors=FALSE 對所有的字元變數都去掉這個行為。此外,你可以用 colClasses選項去對每一列都指定一個類(比如說,邏輯型、數值型、字元型或因子型)。

2.3.3 導入 Excel 數據

讀取一個Excel文件的最好方式,就是在Excel中將其導出為一個逗號分隔文件(csv),並使用前文描述的方式將其導入R中。此外,你可以用 xlsx 包直接地導入Excel工作表。請確保在第一次使用它之前先進行下載和安裝。你也需要 xlsxjars 和 rJava 包,以及一個正常工作的Java安裝(java.com: Java + You)。

library(xlsx)

workbook <- "c:/myworkbook.xlsx"

mydataframe <- read.xlsx(workbook, 1)

對於大型的工作簿(比如說,100000+個單元格),你也可以使用 read.xlsx2() 函數。

替代的包包含了XLConnect 和 openxlsx 包;XLConnect 依賴於 Java,不過 openxlsx 並不是。所有這些軟體包都可以做比導入數據更加多的事情——它們也可以創建和操作Excel文件。那些需要創建R和Excel之間的介面的程序員應該要仔細查看這些軟體包中的一個或多個。

2.3.11 訪問資料庫管理系統

R中有多種面向關係型資料庫管理系統(DBMS)的介面,包括Microsoft SQL Server、MicrosoftAccess、MySQL、Oracle、PostgreSQL、DB2、Sybase、Teradata以及SQLite。其中一些包通過原生的資料庫驅動來提供訪問功能,另一些則是通過ODBC或JDBC來實現訪問的。使用R來訪問存儲在外部資料庫中的數據是一種分析大數據集的有效手段(參見附錄F),並且能夠發揮SQL和R各自的優勢。

1. ODBC介面

在R中通過 RODBC 包訪問一個資料庫也許是最流行的方式,這種方式允許R連接到任意一種擁有ODBC驅動的資料庫,這包含了前文所列的所有資料庫。

第一步是針對你的系統和資料庫類型安裝和配置合適的ODBC驅動——它們並不是R的一部分。如果你的機器尚未安裝必要的驅動,上網搜索一下應該就可以找到。

針對選擇的資料庫安裝並配置好驅動後,請安裝RODBC包。你可以使用命令install.packages("RODBC")來安裝它。

library(RODBC)

myconn <-odbcConnect("mydsn", uid="Rob",pwd="aardvark")

crimedat <- sqlFetch(myconn, Crime)

pundat <- sqlQuery(myconn, "select * from Punishment")

close(myconn)

這裡首先載入了 RODBC包,並通過一個已註冊的數據源名稱( mydsn )和用戶名( rob )以及密碼( aardvark )打開了一個ODBC資料庫連接。連接字元串被傳遞給 sqlFetch() ,它將Crime表複製到R數據框 crimedat 中。然後我們對Punishment表執行了SQL語句 select 並將結果保存到數據框 pundat 中。最後,我們關閉了連接。

函數 sqlQuery()非常強大,因為其中可以插入任意的有效SQL語句。這種靈活性賦予了你選擇指定變數、對數據取子集、創建新變數,以及重編碼和重命名現有變數的能力。

2.4 數據集的標註

為了使結果更易解讀,數據分析人員通常會對數據集進行標註。這種標註包括為變數名添加描述性的標籤,以及為類別型變數中的編碼添加值標籤。

2.4.1 變數標籤

一種解決方法是將變數標籤作為變數名,然後通過位置下標來訪問這個變數。

2.4.2 值標籤

函數 factor() 可為類別型變數創建值標籤。

patientdata$gender <- factor(patientdata$gender,

levels = c(1,2),

labels = c("male","female"))

來創建值標籤。

這裡 levels 代表變數的實際值,而labels 表示包含了理想值標籤的字元型向量。

習題:讀取excle表,合適的存儲方式,有多少病人,有多少一型糖尿病人。

1、考慮到今後會用到r語言和EXCEL之間的輸入輸出,所以決定使用包: XLConnect。

2、安裝java,選擇32位的版本:jdk-8u121-windows-i586.exe。

3、P37,包的安裝和載入。因為包名稱未加引號,出現過錯誤。

4、exsample

install.packages("XLConnect")

library("XLConnect")

workbook <- "E:/數據分析/系列課程《從零學會大數據核心:數據分析》/第2講:數據結構入門/源代碼和數據/病例數據.xlsx"

wb <- loadWorkbook(workbook, create = TRUE)

sheet="sheet1"

createSheet(wb, name = sheet)

createName(wb, name = "sheet1", formula ="sheet1!$C$5")

data = readNamedRegion(wb, name = sheet, header = TRUE)

data = readWorksheet(wb, sheet = sheet, header = TRUE)

data

5、在將文件位置導入常量時,直接複製地址是不行的,必須將「反斜杠」改為「正斜杠/」。

6、在loadWorkbook函數中,直接引用加引號,用常量的話是不加引號的。

7、具體的用法還是在「Mirai Solutions」網站里找到的。

8、在help里找到Vignettes and other documentation,學習函數用法。

XLConnect包的安裝

使用學習:vignette("XLConnect")函數直接打開包的說明文檔,裡面的sample很有用,試用一下就行了。

saveworkbook(wb)函數用後,項目所在文件夾增加了一個excel表:XLConnectExample1.xlsx;example("XLConnect")函數用後,項目所在文件夾增加了一個excel表:XLConnect.xlsx。

▲ 改變.proj後綴的文件名不能改變在RStudio中項目列表的項目名,必須連文件夾名一道改變。在項目文件夾里的excel表就不用再寫那麼長的路徑名了。

xlsx包的安裝

requirelibrary的作用好像是一樣的,括弧里的包名不需要加引號,但是包名區分大小寫。xlsx包里的一些功能,XLConnect包里並沒有。所以兩個都要libarary。

dataframe中的中文被讀成亂碼,使用以下辦法:

在tools中-globaloption-code-saving-default text encoding中選擇UTF-8。這樣console中的中文就正常了。

在read.xlsx函數的可選項中要註明encoding="UTF-8"。

但是我的試驗還是一樣不成功,後來刪除了搜狗輸入法,重啟系統也還是不行。將表格換成03版的也不行。

再次重啟,重新寫入數據,正常。

分析:1、可能之前對數據框賦過值,重新賦值無效——環境中的數據如果沒有刷新,那麼重新賦值可能是沒有起作用的。2、可能XLConnect包對xlsx包有干擾作用。(後證明不是的)

用了第三種方法導入excel表,在右上角envirronment中,有importdataset按鈕,選擇文件(路徑不可過長)導入,這樣也很快。

在選擇1型糖尿病進行採樣時,等於號要打兩個(語法報錯),"1型糖尿病"的後面不可少了逗號,而且這逗號必須是英文格式的。

輸入法時常不管用,這時可以用view里的原字元進行複製粘貼。比如對於"1型糖尿病"的輸入。

有時賦值第一次會有報警,沒關係,再運行一次就OK了,表明不符合grepl語法規則。裡面會問數據是否需要精確匹配,當然是不需要。


推薦閱讀:

ClickHouse數據壓縮[譯文]
數據可視化分析工具實現精準營銷
Kylin 初體驗總結(kafka+superset+ldap)

TAG:數據分析工具 |