2 R的資料的分類

2021-08-29 12:16:49 字數 4079 閱讀 9272

#####2.2.2 r的資料的分類#####

#1. numeric數值型

x = c(1,2,3,4)

xclass(x) #顯示向量的資料型別

#2. integer整數型

x1 = as.integer(x) #將x轉化為整數型資料x1

class(x1)

#3.logical邏輯型

x=c(1,2,3,4)

x==2

!(x<2) #判斷向量x中大於等於2的元素

which(x<2) #選擇向量x中小於2的元素

is.logical(x) #判斷向量x是否為邏輯型資料

#4. character/string字元型

y=c("i","love","r")

yclass(y)

length(y) #顯示向量y的維度,即向量的個數

nchar(y) #顯示向量y中每個元素的字元個數

y=="r" #判斷向量y中為「r"的元素

#5. factor因子型

#簡單來說就是披著定量資料外殼的定性資料,即以數字**形式表現的字元型資料,本質上也為定性資料

***=factor(c(1,1,0,0,1),levels=c(0,1),labels=c("male","female")) #設定因子型資料***

***class(***)

***1=factor(c(1,1,0,0,1),levels=c(0,1),labels=c("female","male")) #調換標籤(labels)的取值,得到因子型資料***1

***1

***2=factor(c(1,1,0,0,1),levels=c(1,0),labels=c("male","female")) #調換水平(levels)的取值,得到因子型資料***2

***2

num = factor(c("a","b","c","d")) #設定因子型變數num

as.numeric(num) #將因子型資料num轉換為數值型資料

num1 = factor(c("b","a","d","c"))

as.numeric(num1)

#num+1 因子型資料不可進行數值運算

as.numeric(num)+1 #轉換為數值型資料後可參與運算

#####2.2.3 用r簡單處理資料#####

#1. 基本資訊

library(mass) #載入含有資料集的軟體包mass

data(insurance) #獲取資料集

dim(insurance) #獲取資料集的維度

dim(insurance[1:10,]) #獲取前10條資料的維度

dim(insurance[,2:4]) #獲取資料集僅含第2、3、4個變數的維度

dim(insurance)[1] #獲取資料集維度向量的第乙個元素,即行數

dim(insurance)[2] #獲取資料集維度向量的第乙個元素,即列數

vars=c("district","age") #構造含有"district"和"age"兩個元素的字元向量vars

insurance[20:25,vars] #篩選出"district"和"age"變數的第20~25行資料

names(insurance) #輸出insurance資料集的變數名

head(names(insurance),n=2) #僅輸出前2個變數名

tail(names(insurance),n=2) #僅輸出後2個變數名

head(insurance$age) #僅輸出age變數前若干條資料

#2. 變數型別

class(insurance$district)

class(insurance$age)

class(insurance$holders)

levels(insurance$age) #顯示age變數的4個水平值

levels(insurance$age)[1] #顯示age變數的第1個水平值

levels(insurance$age)[1]="young" #將age變數的第1個水平值修改為"young"

head(insurance$age)

is.character(insurance$age) #判斷age是否為字元型變數

class(insurance$claims)

class(as.numeric(insurance$claims)) #將claims的資料型別強制轉換為數值型

#####2.3 資料抽樣及實現#####

#####2.3.1 簡單隨機抽樣#####

#sample(x, size, replace = false, prob = null)

#其中x表示待抽取物件,一般以向量形式表示;size為非負整數,表示想要抽取樣本的個數;

#replace表示是否為可放回抽樣,預設情況下為無放回;prob用於設定各抽取樣本的抽樣概率,

#預設情況下為無取值,即等概率抽樣。

#1. 有放回的隨機抽樣

sub1=sample(nrow(insurance),10,replace=t) #從insurance的總觀測數中有放回隨機抽取10個行序號

sub1

insurance[sub1,] #輸出抽取到的10條觀測樣本

sub2=sample(nrow(insurance),10,replace=t,prob=c(rep(0,nrow(insurance)-1),1))

#設定除最後一條樣本的抽樣概率為1外,其他樣本被抽到的概率為0

sub2

insurance[sub2,]

#2. 無放回的隨機抽樣

sub3=sample(nrow(insurance),nrow(insurance)+1) #錯誤的,無放回中size的取值不可以超過x的長度

#####2.3.2 分層抽樣#####

library(sampling)

sub4=strata(insurance,stratanames="district",size=c(1,2,3,4),method="srswor")

#按街區district進行分層,且1-4街區中分別無放回抽取1-4個樣本

sub4

getdata(insurance,sub4) #獲取分層抽樣所得的資料集

sub5=strata(insurance,stratanames = "district",size=c(1,2,3,4),description = true)

#按街區district進行分層,且1-4街區中分別無放回抽取1-4個樣本

#並輸出由description控制的各層基本資訊

sub6=strata(insurance,stratanames="district",size=c(1,2,3,4),method="systematic",

pik=insurance$claims)

sub6 #選擇系統抽樣方法systematic,並以insurance中claims變數控制各層內的抽樣概率

getdata(insurance,sub6)

#####2.3.3 整群抽樣#####

sub7=cluster(insurance, clustername = "district", size=2, method="srswor",

description = true)

#按照district變數的不同取值劃分群,並無放回的抽取其中兩個群的所有樣本

sub7

getdata(insurance,sub7)

#####2.4 訓練集與測試集#####

train_sub=sample(nrow(insurance), 3/4*nrow(insurance)) #隨機無放回抽取3/4樣本行序號

train_data=insurance[train_sub,] #將相應3/4行序號對應樣本構造出訓練集

test_data=insurance[-train_sub,] #將另外1/4行序號對應樣本構造出訓練集

dim(train_data);dim(test_data) #顯示訓練集與測試集的維度

R語言零基礎自學 2 R的資料結構

r的資料結構 向量 用於儲存數值型 字元型或邏輯型的一堆陣列 建議 單個向量中必須是相同的資料型別,儲存不同的資料型別其實沒什麼意義 1 數值型資料 123 2 字元型資料 abc 3 邏輯型資料 true,false 如果是數值 文字 true false會自動全部看作是文字 a c 2,4,6,...

時間序列分析(2)R語言 基本統計量

資料的基本統計量 均值,方差,偏度,峰度等 install.packages fbasics library fbasics rate 檢視資料集,發現最後一行是無限大,刪除 length rate 檢視資料長度 sr rate 258,刪除最後一行 length sr basicstats sr ...

R語言與分類(2)

與舉例分析和fisher判別分析相比,貝葉斯判別分析考慮了不同總體類別的先驗概率,假如說有g1,g2,g3,g4四個p維總體,如果我們能預先得知這四個總體發生的概率,占得比例,那麼在得到新樣品時,就可以根據正態分佈密度函式和到各個總體先驗概率求出各個總體的後驗概率,找出最大的後驗概率對應的總體,即為...