第一章:R語言的介紹
1.典型的數據分析步驟
2.為什么要使用R語言進行數據分析
1.R免費痊夭,是一個全面的統(tǒng)計研究平臺何吝,提供了各式各樣的數據分析技術
2.R包含了其他軟件不可用的航背、先進的數據分析技術庞萍,新方法的更新迭代非赤退ǎ快
3.R擁有頂尖的制圖水準爬橡,R擁有最全面且最強大的一系列功能來使數據可視化
4.R的核心設計理念支持上圖數據分析的步驟治唤,方便數據輸入和輸出
5.R可以輕松的實現各類數據的導入,包括文本文件堤尾、數據庫管理系統(tǒng)肝劲、統(tǒng)計軟件、乃至專門的數據倉庫郭宝、甚至直接從各類網站獲取在線的數據
6.R語言簡單自然辞槐,易于擴展,可以被整合進其他語言編寫的程序粘室,包括C++榄檬、 JAVA、Python衔统、PHP鹿榜、SAS、SPSS
3.R的使用
R的多數功能是由程序內置函數锦爵,用戶自編函數和對對象的創(chuàng)建和操作所提供的舱殿,一個對象可以使任何能被賦值的東西,對R來說险掀,對象可以是(數據沪袭、函數、圖形樟氢、分析結果等等)每一個對象都有一個類屬性冈绊,類屬性可以告訴R怎么對之進行處理
一次交互式對話期間的所有數據都會保存在內存中,一些基本函數是默認直接可用的埠啃,其他高級函數則包含于需要加載的程序包中死宣,R由函數和賦值構成,使用 <- 完成賦值
下面看一段代碼碴开,對R語言有個大致的認識
dir.create("D:/R/workspace/project2_20170402")
setwd("D:/R/workspace/project2_20170402")
getwd()
#打開幫助文檔
help.start()
#安裝vcd包(一個用于可視化類別數據的包)
install.packages("vcd")
help(package="vcd")
#導入vcd包
library(vcd)
#閱讀數據集(Arthritis(來自Koch \&Edwards(1988)的數據來自調查新型類風濕性關節(jié)炎治療的雙盲臨床試驗毅该。))
help(Arthritis)
#運行Arthritis自帶的示例博秫,
Arthritis
example(Arthritis)
#保存到指定的文件路徑
q()
第二章 數據集的創(chuàng)建
1.數據結構
R語言擁有許多用于存儲數據的對象類型,包括標量眶掌、向量台盯、矩陣、數組和列表畏线。
1.1 向量:用于存儲數值型静盅、字符型或邏輯型數據的一位數組,使用組合函數c()來創(chuàng)建
a <- c(1,2,3,4,5)
b <- c("lily","andy","rack","aimy","dannal")
可指定訪問第幾個下標的元素 a[3],也可以使用:生產一個數值序列 b <- c[2:4]等價于b <- c(2,3,4)
輸出結果為 "andy","rack","aimy"
1.2 標量:只含有一個元素的向量
1.3 矩陣
矩陣是一個二維數組寝殴,每一個元素的類型相同蒿叠,通過matrix()函數創(chuàng)建
一般格式如下:
mymatrix <- matrix(vector,nrow = rows,ncol = columns,byrow = VALUSE,dimnames=list(char_rows,char_colnames))
vector :包含的所有元素
nrows:行數
ncol:列數
bycow:矩陣元素填充方式,默認bycow = FALSE,默認列填充
下面是實例代碼
dir.create("D:/R/workspace/project3_20170402")
setwd("D:/R/workspace/project3_20170402")
mx <- matrix(1:20, nrow = 4,ncol = 5,byrow = TRUE)
mx
#打印第一列
mx[,1]
#打印第一行第三列
mx[1,3]
q()
1.4.數組
數組與矩陣類似蚣常,但是維度可以大于2市咽,通過array()函數創(chuàng)建
marray <- array(vector, dimensions,dimnames)
vector:包含的元素
dimensions:數值型向量,給出給個維度下標的最大值
dimnames:可選參數抵蚊,各維度名稱標簽列表
實例:寫出一個2x3x4 的有三維度的數值型數組
dim1 <- c("a1","a2")
dim2 <- c("b1","b2","b3")
dim3 <- c("c1","c2","c3","c4")
myarray <- array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))
myarray
myarray[1,2,3]
q()
1.5 數據框
數據框可以用來存儲不同列不同類型的數據施绎,較矩陣來說更加一般,是R中最常處理的數據結構
贞绳,使用data.frame()函數來創(chuàng)建
mydata <- data.frame(col1,col2,col3.....)
eg:
id <- c(1,2,3,4,5,6)
name <- c("lily","nick","peter","sam","zack","mogen")
age <- c(25,35,47,30,55,42)
testresult <- c("poor","good","nice","excllent","good")
student <- data.frame(id,name,age,testresult)
testresult <- c("poor","good","nice","excllent","good","nice")
student <- data.frame(id,name,age,testresult)
student
#獲取數據框中特定的變量
table(student$name,student$age)
plot(student$name,student$age)
eg :導入病例數據.xlsx 的數據來生成一個數據框并新增一條記錄
xlsx 內容如下圖
currentpatient <- read.table("D:/R/RStudioWorkspace/project1_20170402/病例數據.csv",header = TRUE,row.names = "病人編號",sep = ",",stringsAsFactors = FALSE)
> currentpatient
姓名 年齡 糖尿病類型 病情 英文
1 猴子 29 1型糖尿病 較差 Poor
2 李同 34 2型糖尿病 好轉 Improved
3 王五 28 1型糖尿病 顯著好轉 Excellent
4 張三 52 2型糖尿病 較差 Poor
1.首先將xlsx 轉為csv 格式文件谷醉,調用read.table()方法讀取成一個數框,
2.生成一條病例數據冈闭,調用rbind ()方法插入俱尼,下面是整體代碼:
currentpatient <- read.table("D:/R/RStudioWorkspace/project1_20170402/病例數據.csv",header = TRUE,row.names = "病人編號",sep = ",",stringsAsFactors = FALSE)
> currentpatient
姓名 年齡 糖尿病類型 病情 英文
1 猴子 29 1型糖尿病 較差 Poor
2 李同 34 2型糖尿病 好轉 Improved
3 王五 28 1型糖尿病 顯著好轉 Excellent
4 張三 52 2型糖尿病 較差 Poor
> 病人編號 <- c(5)
> 姓名 <- c("李雷")
> 病情 <- c("較差")
> 年齡 <- c(30)
> 英文 <- "poor"
> newpatient3 <- data.frame(病人編號,姓名,年齡,糖尿病類型,病情,英文)
> data <- rbind(currentpatient,newpatient3)
Error in rbind(deparse.level, ...) : 變量的列數不對
> data <- rbind(currentpatient,newpatient3)
Error in rbind(deparse.level, ...) : 變量的列數不對
> newpatient3 <- data.frame(姓名,年齡,糖尿病類型,病情,英文)
> data <- rbind(currentpatient,newpatient3)
> data
姓名 年齡 糖尿病類型 病情 英文
1 猴子 29 1型糖尿病 較差 Poor
2 李同 34 2型糖尿病 好轉 Improved
3 王五 28 1型糖尿病 顯著好轉 Excellent
4 張三 52 2型糖尿病 較差 Poor
5 李雷 30 2型糖尿病 較差 poor
>
1.6 因子
名義型變量(沒有順序之分的類別變量),有序型(變量間有順序關系萎攒,但不知道相差多少)在R中稱為因子
對于字符型向量遇八,因子的水平默認依字母的順序創(chuàng)建,但在現實中意義不大耍休,字母順序不一定就是我們想要的邏輯順序刃永,因此,可以指定levels 選項來覆蓋默認排序
status <- factor(status,order =TRUE,levels =c("poor","Improved","Excellent"))
1.7 列表
復雜度最高的一種數據類型羊精,列表就是一些對象的的有序集合斯够,使用list()來創(chuàng)建
age<- c(1,2,3,4)
data <- -matrix(1:10,nrow=2)
e <- "a list"
mylist <- list(title = e,age = age,data = data)
#打印出age向量
mylist[[2]] 或者mylist[["ages"]]
三.數據的輸入
1.從鍵盤輸入 使用edit()
2.從帶分割符的文本文件導入數據,使用read.table() 導入數據框
> currentpatient <- read.table("D:/R/RStudioWorkspace/project1_20170402/病例數據.csv",header = TRUE,row.names = "病人編號",sep = ",")
> currentpatient
姓名 年齡 糖尿病類型 病情 病情.1
1 猴子 29 1型糖尿病 較差 Poor
2 李同 34 2型糖尿病 好轉 Improved
3 王五 28 1型糖尿病 顯著好轉 Excellent
4 張三 52 2型糖尿病 較差 Poor
3.從excel導入數據
3.3.1 讀取excel 最好的方式园匹,就是把excel導出為一個逗號分隔文件(csv)并使用2.中描述的方法
3.3.2 使用xlsx 包直接導入excel
eg :
dir.create("D:R/workspace/project4_20170402")
setwd("D:R/workspace/project4_20170402")
getwd()
install.packages("xlsxjars")
install.packages("rJava")
library(xlsxjars)
install.packages("xlsx")
library(xlsx)
workexcel <- "D:/R/workspace/project4_20170402/病例數據.xlsx"
mydataframe <- read.xlsx(workexcel,1)
mydataframe
q()
這樣打印出的是亂碼雳刺,啥子情況劫灶,如何修改編碼方式裸违?
4.從網頁抓取數據
5.導入spss數據
6.導入sas數據