R語言實戰(zhàn)——數據結構入門

第一章:R語言的介紹
1.典型的數據分析步驟

QQ截圖20170402140439.png

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數據

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市本昏,隨后出現的幾起案子供汛,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怔昨,死亡現場離奇詭異雀久,居然都是意外死亡,警方通過查閱死者的電腦和手機趁舀,發(fā)現死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門赖捌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矮烹,你說我怎么就攤上這事越庇。” “怎么了奉狈?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵卤唉,是天一觀的道長。 經常有香客問我仁期,道長桑驱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任跛蛋,我火速辦了婚禮熬的,結果婚禮上涎拉,老公的妹妹穿的比我還像新娘犯眠。我一直安慰自己,他們只是感情好司光,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布此衅。 她就那樣靜靜地躺著强戴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挡鞍。 梳的紋絲不亂的頭發(fā)上骑歹,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音墨微,去河邊找鬼道媚。 笑死,一個胖子當著我的面吹牛翘县,可吹牛的內容都是我干的最域。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锈麸,長吁一口氣:“原來是場噩夢啊……” “哼镀脂!你這毒婦竟也來了?” 一聲冷哼從身側響起忘伞,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤薄翅,失蹤者是張志新(化名)和其女友劉穎沙兰,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體翘魄,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡鼎天,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了暑竟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斋射。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖但荤,靈堂內的尸體忽然破棺而出绩鸣,到底是詐尸還是另有隱情,我是刑警寧澤纱兑,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布呀闻,位于F島的核電站,受9級特大地震影響潜慎,放射性物質發(fā)生泄漏捡多。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一铐炫、第九天 我趴在偏房一處隱蔽的房頂上張望垒手。 院中可真熱鬧,春花似錦倒信、人聲如沸科贬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榜掌。三九已至,卻和暖如春乘综,著一層夾襖步出監(jiān)牢的瞬間憎账,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工卡辰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胞皱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓九妈,卻偏偏與公主長得像反砌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子萌朱,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容