R軟件學習筆記-2

1.

a<-c(1,2,3)    ####創建對象

str(a)         ####查看對象結構,結果顯示: num [1:3] 1 2 3




ls()           ####管理對象,瀏覽當前工作空間中包含的對象,比如上面會包含“a”對象
rm(a)          ####刪除當前工作空間中的指定對象
remove(b)  ###和上面一樣,即rm()
ls()


2.

數據類型

######################創建包含一個元素的向量
V1<-59         #創建整數形式的數值型向量,存儲類型默認爲雙精度型
V2<-53.5       #創建實數形式的數值型向量,存儲類型爲雙精度型
V3<-"abcD"     #創建邏輯型向量,並直接顯示對象值
(V4<-TRUE)     #創建邏輯型向量,並直接顯示對象值

is.vector(V1)  #判斷V1是否是向量
is.logical(V4) #判斷V4是否是邏輯型向量


手動添加表

X<-c(1,1,1)                   #地區橫座標,通過常數創建數值型向量
Y<-c(2,2,2)                   #縱座標
temp<-c(14.7,18.5,25.9)       #溫度
RH<-c(66,73,41)               #相對溼度
wind<-c(2.7,8.5,NA)           #風速,NA表示數值取缺失值
rain<-c(0,0,0)                #降雨量
area<-rain                    #過火面積,rain的值賦給area
month<-c("aug","aug","aug")   #月份,通過常數創建字符串向量
day<-rep("fri",each=3)        #星期,通過rep函數創建向量,重複函數
rank<-seq(from=1,to=3,by=1)   #通過seq函數創建向量,遞增


訪問指定元素

#########################訪問指定位置上的元素
a<-vector(length=10)        #創建包含10個元素的向量a,每個元素都是0
a[1]<-1                     #訪問第一個元素,賦值爲1
a[2:4]<-c(2,3,4)            #訪問第2-4個元素,賦值爲2,3,4
b<-seq(from=5,to=9,by=1)    #生成一個取值爲5-9的序列給向量b
a[c(5:9,10)]<-c(b,10)       #訪問第5-9以及第10個向量,並賦值爲5-10

可以看到[ ]括號用來訪問,()用來表示向量


合併矩陣

ForeData<-cbind(X,Y,temp,RH,wind,rain,area,rank)   #利用列合併函數cbind創建矩陣
dim(ForeData)                                      #顯示矩陣的行列數


訪問矩陣元素

#############訪問矩陣中的元素

ForeData
ForeData[2,3]
ForeData[1:2,1:3]

fix(ForeData)         #利用編輯窗口形式訪問ForeDta


創建數據框

ForeDataFrm<-data.frame(FX=X,FY=Y,Fmonth=month,Fday=day,Ftemp=temp,FRH=RH,Fwind=wind,Frain=rain,Farea=area)   #創建數據框

data.frame把矩陣轉換成數據框

數組是一組類型相同的值
矩陣就是一個多維數組
數據框是一個特殊的對象,類似數據庫裏的表的概念


訪問數據框

ForeDataFrm$Fwind              #訪問Fwind域
ForeDataFrm[["Ftemp"]]         #訪問Ftemp域
ForeDataFrm[[5]]               #訪問第5個域(Ftemp)
ForeDataFrm$Ftemp<-ForeDataFrm$Ftemp*1.8+32  #將攝氏溫度轉化爲華氏溫度
attach(ForeDataFrm)            #attach數據框綁定函數,detach解綁函數,兩者之間可簡化域名書寫
Ftemp                          #攝氏溫度已經轉化爲華氏溫度
Fwind
detach(ForeDataFrm)
Ftemp                          #不能在attach與detach之外省略數據框名


創建表

######################################創建列表
a<-c(1,2,3)
b<-matrix(nrow=5,ncol=2)
b[,1]=seq(from=1,to=10,by=2)
b[,2]=seq(from=10,to=1,by=-2)
c<-array(1:60,c(4,5,3))
d<-list(L1=a,L2=b,L3=c)            #創建列表d,包含3個成分,分別是向量、矩陣和數組


訪問表

######################################
names(d)                           #顯示列表d的成分名
str(d)                             #顯示d的存儲類型和結構信息
is.list(d)                         #判斷d是否爲列表
d$L1                               #訪問列表d中的成分L1
d[["L2"]]                          #訪問列表d中的成分L2
d[[2]]                             #訪問列表d中的第2個成分(L2)
rm(a,b,c,d)                        #刪除a,b,c,d


強制類型轉換

a<-123.4
(a<-as.integer(a))                #將雙精度型轉化爲整數型

(a<-as.character(a))              #將雙精度型轉化爲字符串型

(a<-as.double(a))                 #無法將將包含非阿拉伯數字的字符串轉化爲數值型 
typeof(a)                                #顯示a的存儲類型      


結構類型轉換

> (a<-c(1:10))
 [1]  1  2  3  4  5  6  7  8  9 10
> (b<-matrix(a,nrow=5,ncol=2,byrow=TRUE))   #由向量a派生矩陣b
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
[4,]    7    8
[5,]    9   10
> (a<-as.matrix(a))                         #將向量a轉化爲矩陣a,默認列矩陣
      [,1]
 [1,]    1
 [2,]    2
 [3,]    3
 [4,]    4
 [5,]    5
 [6,]    6
 [7,]    7
 [8,]    8
 [9,]    9
[10,]   10


向量轉化爲因子

(a<-c("Poor","Improved","Excellent","Poor"))  #創建字符串型向量a,包含4個元素
is.vector(a)                                  #判斷是向量
(b<-as.factor(a))                             #利用as.factor將字符串型向量a轉化爲因子a,並顯示a
is.factor(b)
levels(b)                                     #順序顯示因子水平值對應的類別值
typeof(b)                                     #顯示因子的存儲類型爲整數型,但顯示的是類別值,爲字符串

levels用來表示排序的標準,按照因子進行排序


讀取文本數據

#######################################讀取txt

#形成向量
Forest<-scan(file="ForestData.txt",what=double(),skip=1)   #無法成功執行,scan要求數據的存儲類型一致,即txt裏面的內容要麼全是int,要麼全是字符等

#形成數據框
Forest<-read.table(file="ForestData.txt",header=TRUE)      #讀取txt形成數據框,且第一行爲標題
str(Forest)
names(Forest)
Forest<-read.table(file="ForestData.txt",header=TRUE,stringsAsFactors=FALSE)  #是否自動轉化字符串爲因子
Forest<-read.table(file="ForestData.txt",header=TRUE,colClass=c("integer","integer","character","character","double","integer","double","double","double"))       #指定各域的存儲類型



########################################讀取SPSS數據
library(foreign)                   #加載包foreign
Forest<-read.spss(file="ForestData.sav",use.value.labels = TRUE, to.data.frame = TRUE)   #因子轉化,數據讀入數據框
str(Forest)




########################讀取Excel數據
install.packages("xlsx")       #下載並安裝包
library("xlsx")                #加載
Forest<-read.xlsx("ForestData.xlsx",1,header=TRUE,as.data.frame=TRUE)
str(Forest)
levels(Forest$month)
Forest$month<-factor(Forest$month,order=TRUE,levels=c("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"))
levels(Forest$month)




#######################讀取數據庫數據
install.packages("RODBC")        #下載安裝RODBC包
library("RODBC")                 #加載
MyConn<-odbcConnectAccess2007("ForestData.accdb",uid="",pwd="")   #建立ForestData.accdb的數據通道,通道名爲MyConn
Forest<-sqlFetch(MyConn,"Table1")     #通過通道讀取Table1表數據到數據框中
close(MyConn)                     #關閉數據通道
str(Forest)




##########通過ODBC讀取Excel數據
MyConn<-odbcConnectExcel2007("ForestData.xlsx")
Forest<-sqlFetch(MyConn,"Forest")
close(MyConn)
str(Forest)


發佈了18 篇原創文章 · 獲贊 43 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章