Rubicon 入门 iMooc 数据类型 函数,1.访问内定地点的因素

1.数码对象

1.1结构

  • vector。具备同等档期的顺序的多寡的集聚,默以为列向量。Factor也是破例向量。
  • matrix。组织四个具有近似类别的向量。列为变量(实例卡塔 尔(英语:State of Qatar),行为观测(因子卡塔尔
  • array数组。多张二维表的集合
  • dataframe.与矩阵相近,可是储存类型不一致的变量。
  • list列表。多个向量、矩阵、数组、数据库的联谊。用于将相关总结分析结果“打包”

图片 1

tags: 瑞鹰 入门 iMooc 数据类型 函数

1.2向量

#查看对象结构
str()
#管理对象
ls()
rm()
remove()

  向量的成立

X<-c(1,1,1)
length(X)
Y<-c(2,2,2)
temp<-c(14.7,18.5,25.9)
RH<-c(66,73,41)
wind<-c(2.7,8.5,3.6)
rain<-c(0,0,0)
area<-rain
month<-c("aug","aug","aug")
day<-rep("fri",each=3)
rank<-seq(from=1,to=3,by=1)
str(month)
str(rank)
ls()

  

rep(begin:end,each=repeat times)#每个值重复多少次
rep(begin:end,times=repeat times)#向量重复多少次
seq(from=,to=,by=)

seq(from=,to=,length=)

vector(length=)#包含多少元素

  访问向量

1.拜谒内定地点的要素

向量名[位置变量]
向量名[位置变量1:位置变量2]
向量名[c(位置变量列表)]

  

> a<-vector(length=10)
> a
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> a[1]<-1
> a[2:4]<-c(2,3,4)
> a
 [1] 1 2 3 4 0 0 0 0 0 0
> b<-seq(from=5,to=9,by=1)
> a[c(5:9,10)]<-c(b,10)#访问5~9和第10个向量,并赋值5~10
> a
 [1]  1  2  3  4  5  6  7  8  9 10

  

2.使用职务向量访谈钦点地方的要素

向量名[位置向量名]

  

> b<-(2:4)
> a[b]
[1] 2 3 4
> b<-c(TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE)
> a[b]
[1] 1 4

  

3.探望内定地方外的因素

向量名[-位置变量]
向量名[-(位置变量1:位置变量2)]
向量名[-c(位置变量列表)]
向量名[-位置变量名]

  

> a[-(2:4)]
[1]  1  5  6  7  8  9 10
> a[-c(5:9,10)]
[1] 1 2 3 4
> b<-(2:4)
> a[-b]
[1]  1  5  6  7  8  9 10

  

那是在 imooc
慕课英特网听课做的一些内容。近日看来拾分平素不逻辑。感到上和matlab挺像,不过部分数据类型依然未有怎么概念。

1.3矩阵

联合三个向量

#合并列向量
cbind(向量名列表)
#显示列数
dim(矩阵名)
#命名
colnames()
colnames(矩阵名[,列位置常量1:2])
rownames()
rownames(矩阵名[行位置常量1:2,])

  

> ForeData<-cbind(X,Y,temp,RH,wind,rain,area,rank)
> dim(ForeData)
[1] 3 8
> ForeData
     X Y temp RH wind rain area rank
[1,] 1 2 14.7 66  2.7    0    0    1
[2,] 1 2 18.5 73  8.5    0    0    2
[3,] 1 2 25.9 41  3.6    0    0    3
> str(ForeData)
 num [1:3, 1:8] 1 1 1 2 2 2 14.7 18.5 25.9 66 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:8] "X" "Y" "temp" "RH" ...
> colnames(ForeData)
[1] "X"    "Y"    "temp" "RH"   "wind" "rain" "area" "rank"
> colnames(ForeData[,3:5])
[1] "temp" "RH"   "wind"
> rownames(ForeData)<-c("1","2","3")
> rownames(ForeData[c(1,3),])
[1] "1" "3"
> is.matrix(ForeData)
[1] TRUE

  

a<-(1:9)
b<-(1:3)
c<-(1:2)
cbind(a,b)
cbind(a,b,c)
rbind(a,b)#行合并
rm(a,b,c)

 

2.借使matrix中的数据现已存在于有些向量中,则能够将此向量按一定措施派生为矩阵

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,
       dimnames = list(rownames,colnames))

  

> a<-(1:30)
> dim1<-c("R1","R2","R3","R4","R5")
> dim2<-c("C1","C2","C3","C4","C5","C6")
> a<-matrix(a,nrow=5,ncol=6,byrow=FALSE,dimnames=list(dim1,dim2))
> a
   C1 C2 C3 C4 C5 C6
R1  1  6 11 16 21 26
R2  2  7 12 17 22 27
R3  3  8 13 18 23 28
R4  4  9 14 19 24 29
R5  5 10 15 20 25 30

  访谈矩阵中的成分

1.钦定地方上的要素

矩阵名[行位置常量,列位置常量]
矩阵名{行位置常量1:行位置常量2,列位置常量1:列位置常量2】
矩阵名[c(行位置常量列表),c(列位置常量列表)]

 

> ForeData
  X Y temp RH wind rain area rank
1 1 2 14.7 66  2.7    0    0    1
2 1 2 18.5 73  8.5    0    0    2
3 1 2 25.9 41  3.6    0    0    3
> ForeData[2,3]
[1] 18.5
> ForeData[1:2,1:3]
  X Y temp
1 1 2 14.7
2 1 2 18.5
> a<-(1:2)
> ForeData[a,c(1,3)]
  X temp
1 1 14.7
2 1 18.5
> ForeData[c(1,3),]
  X Y temp RH wind rain area rank
1 1 2 14.7 66  2.7    0    0    1
3 1 2 25.9 41  3.6    0    0    3

  2.采用编辑窗口访问成分

fix(ForeData)

  

 

 

图片 2

 

矩阵总结

1.合并

(m1<-matrix(1,nrow=2,ncol=2))
(m2<-matrix(2,nrow=2,ncol=2))
(mm1<-cbind(m1,m2))
(mm2<-rbind(m1,m2))

  

2.乘法

%*%

(mm3<-mm1%*%mm2)
(mm3<-mm2%*%mm1)

  

3.成立对角矩阵

> diag(8)  #创建8乘8的单位阵
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    0    0    0    0    0    0    0
[2,]    0    1    0    0    0    0    0    0
[3,]    0    0    1    0    0    0    0    0
[4,]    0    0    0    1    0    0    0    0
[5,]    0    0    0    0    1    0    0    0
[6,]    0    0    0    0    0    1    0    0
[7,]    0    0    0    0    0    0    1    0
[8,]    0    0    0    0    0    0    0    1
> diag(c(1,2,3,4)) 
     [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    2    0    0
[3,]    0    0    3    0
[4,]    0    0    0    4
> diag(c(1,2,3,4),nrow=3,ncol=4)
     [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    2    0    0
[3,]    0    0    3    0

  

4.转置&逆

t()
solve()
eigen()#特征向量与特征值

  

1. 数据类型

翻看数据x类型:class(x)
字符(character卡塔尔, 它们常常被引号包围
逻辑类型(logic卡塔 尔(阿拉伯语:قطر‎,TRUE,FALSE和NA,全部大写
复数(complex),1+2i
数值型(numeric卡塔 尔(英语:State of Qatar),能够是整数只怕小鼠
寸头(integer卡塔尔国,在数字前面加上海大学写的L
列表(list卡塔尔 S 对象的向量
因子(factor卡塔尔国 常用于标志样品

1.3数组

array(data = NA, dim = length(data), dimnames = list(维名称列表))

  

a<-(1:60)
dim1<-c("R1","R2","R3","R4")
dim2<-c("C1","C2","C3","C4","C5")
dim3<-c("T1","T2","T3")
a<-array(a,c(4,5,3),dimnames=list(dim1,dim2,dim3))
>a
, , T1

   C1 C2 C3 C4 C5
R1  1  5  9 13 17
R2  2  6 10 14 18
R3  3  7 11 15 19
R4  4  8 12 16 20

, , T2

   C1 C2 C3 C4 C5
R1 21 25 29 33 37
R2 22 26 30 34 38
R3 23 27 31 35 39
R4 24 28 32 36 40

, , T3

   C1 C2 C3 C4 C5
R1 41 45 49 53 57
R2 42 46 50 54 58
R3 43 47 51 55 59
R4 44 48 52 56 60

> a[1:3,c(1,3),]#所有表格1~3行,1、3列的元素
, , T1

   C1 C3
R1  1  9
R2  2 10
R3  3 11

, , T2

   C1 C3
R1 21 29
R2 22 30
R3 23 31

, , T3

   C1 C3
R1 41 49
R2 42 50
R3 43 51

  

1.1逻辑向量

>, <, >=, <=,
不等:!=
相等:==
交集(and):&
并集(or):|

1.4dataframe

1.2 字符型

字符向量也能够用c()拼接

创建

data.frame(域名1=向量名1,域名2=向量名2,...)
names(数据框名)

  

> ForeDataFrm<-data.frame(FX=X,FY=Y,Fmonth=month,Fday=day,Ftemp=temp,FRH=RH,Fwind=wind,Frain=rain,Farea=area)
> ForeDataFrm
  FX FY Fmonth Fday Ftemp FRH Fwind Frain Farea
1  1  2    aug  fri  14.7  66   2.7     0     0
2  1  2    aug  fri  18.5  73   8.5     0     0
3  1  2    aug  fri  25.9  41   3.6     0     0
> names(ForeDataFrm)
[1] "FX"     "FY"     "Fmonth" "Fday"   "Ftemp"  "FRH"    "Fwind" 
[8] "Frain"  "Farea" 

> str(ForeDataFrm)
'data.frame':   3 obs. of  9 variables:
 $ FX    : num  1 1 1
 $ FY    : num  2 2 2
 $ Fmonth: Factor w/ 1 level "aug": 1 1 1
 $ Fday  : Factor w/ 1 level "fri": 1 1 1
 $ Ftemp : num  14.7 18.5 25.9
 $ FRH   : num  66 73 41
 $ Fwind : num  2.7 8.5 3.6
 $ Frain : num  0 0 0
 $ Farea : num  0 0 0

  若创立数量框前卫没有数量与之对应:

> a<-data.frame(x1=numeric(0),x2=character(0),x3=logical(0))
> str(a)
'data.frame':   0 obs. of  3 variables:
 $ x1: num 
 $ x2: Factor w/ 0 levels: 
 $ x3: logi 
> fix(a)

1.3 爆发种类

  • rep(a, times = value),重排。
  • seq(from = value, to = value, by = value, length = value).
    例如,seq(1,10,2),从1开始,步长为2,到10,结果是[1,3,5,7,9]

  访问

1.数据框名$域名
2.数据框名[["域名"]]
3.数据框名[[域编号]]
4.
attach(数据框名)
访问域名函数1
访问域名函数2
...
detach(数据框名)

with(数据框名,{域访问函数1,...})#不可以修改域中的数据

数据框名<-within(数据框名,{域访问函数1,...})

  

> ForeDataFrm
  FX FY Fmonth Fday Ftemp FRH Fwind Frain Farea
1  1  2    aug  fri  14.7  66   2.7     0     0
2  1  2    aug  fri  18.5  73   8.5     0     0
3  1  2    aug  fri  25.9  41   3.6     0     0
> ForeDataFrm$Fwind
[1] 2.7 8.5 3.6
> ForeDataFrm[["Ftemp"]]
[1] 14.7 18.5 25.9
> ForeDataFrm[[5]]
[1] 14.7 18.5 25.9
> ForeDataFrm$Ftemp<-ForeDataFrm$Ftemp*1.8+32#对指定域名进行操作
> attach(ForeDataFrm)
> Ftemp
[1] 58.46 65.30 78.62
> Fwind
[1] 2.7 8.5 3.6
> detach(ForeDataFrm)
> Ftemp #detach以后就不能操作了
Error: object 'Ftemp' not found

 

> with(ForeDataFrm,{
+ print(Ftemp)
+ Ftemp<-(Ftemp-32)/1.8
+ print(Ftemp)
+ print(Fwind)
+ })
[1] 58.46 65.30 78.62
[1] 14.7 18.5 25.9
[1] 2.7 8.5 3.6

  

 

2. 数据结构

1.5list

 

list(成分名1=对象名1,....)

  创建七个名称为d的列表,成分名字为L1,L2,L3,依次对应a,b,c两个对象

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) 
names(d)  
str(d)
is.list(d) 
d$L1 
d[["L2"]]
d[[2]]

> str(d)
List of 3
$ L1: num [1:3] 1 2 3
$ L2: num [1:5, 1:2] 1 3 5 7 9 10 8 6 4 2
$ L3: int [1:4, 1:5, 1:3] 1 2 3 4 5 6 7 8 9 10 …

> d$L1 
[1] 1 2 3
> d[["L2"]]
     [,1] [,2]
[1,]    1   10
[2,]    3    8
[3,]    5    6
[4,]    7    4
[5,]    9    2
> d[[2]]
     [,1] [,2]
[1,]    1   10
[2,]    3    8
[3,]    5    6
[4,]    7    4
[5,]    9    2

2.1 向量

  1.6多少对象的互相转变

1.不及积攒类型

typeof()
as.储存类型(数据对象名)
#numeric,integer,double,charactor,logical

2.例外结构类型之间的倒车

> (a<-c(1:10))
 [1]  1  2  3  4  5  6  7  8  9 10
> (b<-matrix(a,nrow=5,ncol=2,byrow=TRUE))
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
[4,]    7    8
[5,]    9   10
> (a<-as.matrix(a))
      [,1]
 [1,]    1
 [2,]    2
 [3,]    3
 [4,]    4
 [5,]    5
 [6,]    6
 [7,]    7
 [8,]    8
 [9,]    9
[10,]   10
> is.matrix(a)
[1] TRUE
> (b<-as.vector(b))
 [1]  1  3  5  7  9  2  4  6  8 10
> is.vector(b)
[1] TRUE

  注意矩阵转成向量是从左到右的各种

as.matrix()
as.vector()

  

3.向量-因子

as.factor()
factor(向量名,order=TURE/FALSE,level=c(类别值列表))

  

> (a<-c("Poor","Improved","Excellent","Poor")) 
[1] "Poor"      "Improved"  "Excellent" "Poor"     
> (b<-factor(a,order=FALSE,levels=c("Poor","Improved","Excellent")))  
[1] Poor      Improved  Excellent Poor     
Levels: Poor Improved Excellent
> (b<-factor(a,order=TRUE,levels=c("Poor","Improved","Excellent")))
[1] Poor      Improved  Excellent Poor     
Levels: Poor < Improved < Excellent

  因子-向量:大切诺基不帮助对因子直接助长水平值,所以要先将因子转为向量,并累计相应品种的成分,再将向量转为因子

as.vector(因子名)

  

#######利用factor函数重新设置类别值
> (a<-c("Poor","Improved","Excellent","Poor")) 
[1] "Poor"      "Improved"  "Excellent" "Poor"     
> (b<-factor(a,levels=c("Poor","Improved","Excellent")))  
[1] Poor      Improved  Excellent Poor     
Levels: Poor Improved Excellent
> (b<-factor(a,levels=c("Poor","Improved","Excellent"),labels=c("C","B","A")))
[1] C B A C
Levels: C B A

###############借助类型转换增加因子的水平
> (a<-c("A","C","B","C")) 
[1] "A" "C" "B" "C"
> (b<-as.factor(a))
[1] A C B C
Levels: A B C
> b[5]<-"D"
Warning message:
In `[<-.factor`(`*tmp*`, 5, value = "D") :
  invalid factor level, NA generated

> c<-as.vector(b)
> typeof(c)
[1] "character"
> c[5]<-"D"
> (b<-as.factor(c))
[1] A C B C D
Levels: A B C D

  

2.1.1 产生向量

函数vector有三个参数:类型(mode)和长短(length),创造的向量巧月素值决计于参数所钦命的数据类型:数值型向量则成分值都为0,逻辑型都为FALSE,字符型都为””。以下多少个函数有差十分少相仿的遵守(创立三个向量卡塔尔何况仅有二个参数即长度:numeric(),logical(),和character()。

  • vector(mode = 'character', length = 5) 发生叁个字符类型的空向量。
  • x1 <- 1:4 产生int向量,[1 2 3 4 ]
  • x2 <- c(1,2,3,4) 产生num向量 [1 2 3 4]
  • x2 <- c(TRUE,1,'3','a') 产生char向量 [‘TRUE’,’1′,’3′,’a’]
  • as.character(x) 强制转变类型
  • names(x) <- c('name1','name2','name3') 增加数码标签

2.导入数据

1.读文件数据

#到向量中
> Forest<-scan(file="ForestData.txt",what=double(),skip=1)   #无法成功执行,要求数据类型一样
Error in scan(file = "ForestData.txt", what = double(), skip = 1) : 
  scan() expected 'a real', got 'aug'

#到数据框中
Forest<-read.table(file="ForestData.txt",header=TRUE)
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"))
#指定储存类型

  

2.外界数据导入

########################################读取SPSS数据
library(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")
library("RODBC")
MyConn<-odbcConnectAccess2007("ForestData.accdb",uid="",pwd="")
Forest<-sqlFetch(MyConn,"Table1")
close(MyConn)
str(Forest)

  

2.2 矩阵

  • 向量+维度
  • 先row,再col
  • attribute(x) 查看属性

3.数量统风姿洒脱与排列

2.2.1 发生矩阵

用matrix来创建:matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

慎选byrow表示数据交由的值是要按列填充(缺省值卡塔 尔(英语:State of Qatar)照旧按行填充
(要是为TRUE卡塔尔国。能够透过接收dimnames给行列命名。

e = c(1:6)
f = matrix(e,2,3,byrow=TRUE)
f
    [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

另生机勃勃种创设矩阵的格局是给维数适当的赋值,这种艺术也能更正原来就有矩阵的维度

> dim(e)
NULL
> dim(e) <- c(2,3)
> e
    [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> dim(e) <- c(3,2)
> e
    [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

3.1.数据统大器晚成

## Default S3 method:
merge(x, y, ...)

## S3 method for class 'data.frame'
merge(x, y, by = intersect(names(x), names(y)),
      by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
      sort = TRUE, suffixes = c(".x",".y"),
      incomparables = NULL, ...)


authors <- data.frame(
    surname = I(c("Tukey", "Venables", "Tierney", "Ripley", "McNeil")),
    nationality = c("US", "Australia", "US", "UK", "Australia"),
    deceased = c("yes", rep("no", 4)))
books <- data.frame(
    name = I(c("Tukey", "Venables", "Tierney",
             "Ripley", "Ripley", "McNeil", "R Core")),
    title = c("Exploratory Data Analysis",
              "Modern Applied Statistics ...",
              "LISP-STAT",
              "Spatial Statistics", "Stochastic Simulation",
              "Interactive Data Analysis",
              "An Introduction to R"),
    other.author = c(NA, "Ripley", NA, NA, NA, NA,
                     "Venables & Smith"))

(m1 <- merge(authors, books, by.x = "surname", by.y = "name"))
(m2 <- merge(books, authors, by.x = "name", by.y = "surname"))

> (m1 <- merge(authors, books, by.x = "surname", by.y = "name"))
   surname nationality deceased                         title
1   McNeil   Australia       no     Interactive Data Analysis
2   Ripley          UK       no            Spatial Statistics
3   Ripley          UK       no         Stochastic Simulation
4  Tierney          US       no                     LISP-STAT
5    Tukey          US      yes     Exploratory Data Analysis
6 Venables   Australia       no Modern Applied Statistics ...
  other.author
1         <NA>
2         <NA>
3         <NA>
4         <NA>
5         <NA>
6       Ripley
> (m2 <- merge(books, authors, by.x = "name", by.y = "surname"))
      name                         title other.author nationality
1   McNeil     Interactive Data Analysis         <NA>   Australia
2   Ripley            Spatial Statistics         <NA>          UK
3   Ripley         Stochastic Simulation         <NA>          UK
4  Tierney                     LISP-STAT         <NA>          US
5    Tukey     Exploratory Data Analysis         <NA>          US
6 Venables Modern Applied Statistics ...       Ripley   Australia
  deceased
1       no
2       no
3       no
4       no
5      yes
6       no

  

2.2.2 矩阵拼接

  • rbind(x,x1) row拼接(纵向)
  • cbind(x,x1) col拼接(横向)

3.2.数码排列

order(..., na.last = TRUE, decreasing = FALSE,
      method = c("auto", "shell", "radix"))

> ReportCard<-read.table(file="ReportCard1.txt",header=TRUE)
> Ord<-order(ReportCard$math,na.last=TRUE,decreasing=TRUE) #按math从高到低排列
> Ord#位置向量
 [1] 48 60 59 15 27 23 36 30 49 42  6 28  7 41 58 32 54 45 39 44
[21] 52 12 40 38 10  4 29 26 56 33 43 37 31 16  3 11  9 55 50 13
[41] 47 51 53 22 24 57 18  8 19 21 34 46  2 14 20 35  5 25 17  1
> a<-ReportCard[Ord,]
> fix(a)

 图片 3 

2.2.3 矩阵维度的命名

> dimnames(e) <- list(c('1','2','3'), c('a','b'))
> e
  a b
1 1 4
2 2 5
3 3 6

4.缺点和失误数据

is.na()
is.nan()
complete.cases(matrix/dataframe)#注意判断每个观测样本是否有缺失值

 

> a<-ReportCard[Ord,]
> a<-is.na(ReportCard$math)
> ReportCard[a,]
     xh sex poli chi math
1 92103   2   NA  NA   NA
> a<-complete.cases(ReportCard)#判断完整观测
> ReportCard[!a,]#显示有缺失成绩的学生信息
     xh sex poli chi math
1 92103   2   NA  NA   NA
3 92142   2  NaN  70   59

  生成缺点和失误值报告

md.pattern()

  

> library("mice")

> md.pattern(ReportCard)

xh sex chi math poli
58 1 1 1 1 1 0  #有57个学子的实际业绩数据是总体的,有0个缺点和失误值的变量
1 1 1 1 1 0 1  #有1名上学的小孩子在poli那八个变量上取了确实值
1 1 1 0 0 0 3 #有一名学生在八个变量上取了缺点和失误值
   0 0 1 1 2 4 #在各变量上取缺点和失误值的考查样品数

 

  

 缺点和失误值管理

#粗暴的删除
na.omit()

  

> ReportCard1<-read.table(file="ReportCard1.txt",header=TRUE)
> ReportCard2<-read.table(file="ReportCard2.txt",header=TRUE)
> ReportCard<-merge(ReportCard1,ReportCard2,by="xh")
> attach(ReportCard)
> SumScore<-poli+chi+math+fore+phy+che+geo+his
> detach(ReportCard)
> avScore<-SumScore/8
> ReportCard$sumScore<-SumScore
> ReportCard$avScore<-avScore
> sum(is.na(ReportCard$sumScore))
[1] 2
> mean(complete.cases(ReportCard))
[1] 0.9666667

  

2.3 数组

维度能够到达多维(三维及以上卡塔 尔(英语:State of Qatar)的矩阵,中华V中的矩阵只好有2维
创设方法是 x <- array(1:24, dim = c(2,3,4))

5.变量总括与重编码

2.4 列表(list)

可以包涵差异品种的对象,通过重新方括号依旧名词来拜候

l <- list('a', 2.4, TRUE, 4L, -2)
l <- list(x1 = 'a', x2 = 2.4, x3 = TRUE, x4 = 4L, x5 = -2) # 可以命名,通过l[[2]]或l[['x2']]访问
l <- list(c(1,2,3),c(2,4,5))

5.1变量总计

+ – * / ^ 整除:%/% 求余:%%

函数

图片 4

图片 5

图片 6

图片 7

图片 8

2.5 因子

  • 管理分类变量。富含各类变量和命名变量。通过在factor函数中增加参数
    order = TRUE来构造顺序变量。
  • 大背头变量+标签(优于整数变量卡塔尔。常用来线性模型

八个因子不唯有包括分类变量本人,还包括变量分裂的只怕水平(尽管它们在数量中不现身卡塔尔。因子函数factor用下边包车型地铁选项成立三个因子:

x <- factor(c('male','male','male','female','female'))
x
[1] male   male   male   female female
Levels: female male

y <- factor(c('male','male','male','female','female'), levels = c('male','female') )
y
[1] male   male   male   female female
Levels: male female # 和x相比,顺序不同。依次编号

factor(x, levels = sort(unique(x), na.last = TRUE), labels = levels, exclude = NA, ordered = is.ordered(x))`

levels
用来钦定因子恐怕的程度(缺省值是向量x中互异的值卡塔尔国;labels用来钦定水平的名字;exclude表示从向量x中除去的品位值;ordered是一个逻辑型选项用来钦定因子的水平是或不是档次明显。回顾数值型或字符型

对因子进行全体性驾驭,能够动用table(x)查看因子不一样水平的数据。仍然为能够去掉因子的属性levels,使用unclass(x),会化为叁个integer的向量。

5.2自定义函数

MyFun<-function(dataname1=x1,dataname2=x2,key=c){
 result<-merge(dataname1,dataname2,by=key)
 return(result)
}
#####调用用户自定义函数
MyData<-MyFun(dataname1=ReportCard1,dataname2=ReportCard2,key="xh")
MyData<-MyFun(ReportCard1,ReportCard2,"xh")
#调试函数

> debug(MyFun)
>
MyData<-MyFun(dataname1=ReportCard1,dataname2=ReportCard2,key=”xh”)
debugging in: MyFun(dataname1 = ReportCard1, dataname2 = ReportCard2,
key = “xh”)
debug at #1: {
result <- merge(dataname1, dataname2, by = key)
return(result)
}
Browse[2]> n
debug at #2: result <- merge(dataname1, dataname2, by = key)
Browse[2]> n
debug at #3: return(result)
Browse[2]> n
exiting from: MyFun(dataname1 = ReportCard1, dataname2 = ReportCard2,
key = “xh”)

  

2.6 缺失值

  • NA/NaN, NaN 属于NA,NA不属于NaN
  • NaN平日用于数字缺点和失误值,然而NA更广。同时NA有档案的次序属性,如字符型整数型
  • is.na()is.nan() 判别是或不是是缺点和失误值

5.重编码

1.分组

ReportCard<-within(ReportCard,{
 avScore[avScore>=90]<-"A"
 avScore[avScore>=80 & avScore<90]<-"B"
 avScore[avScore>=70 & avScore<80]<-"C"
 avScore[avScore>=60 & avScore<70]<-"D"
 avScore[avScore<60]<-"E"
 })
flag<-ReportCard$avScore %in% c("A","B","C","D","E")
ReportCard$avScore[!flag]<-NA

  图片 9

2.重定义种类值

> unique(ReportCard$sex)   #获得性别的取值,检查性别取值范围是否正确
[1] 2 1
> ReportCard$sex<-factor(ReportCard$sex,levels=c(1,2),labels=c("M","F"))
> str(ReportCard$sex)
 Factor w/ 2 levels "M","F": 2 1 2 2 1 2 2 1 1 2 ...

  

2.7 数据框 data frame

存款和储蓄表格数据。
能够说是各样要素长度雷同的列表

  • 种种成分代表1列数据(竖着的1列卡塔 尔(阿拉伯语:قطر‎
  • 每种成分的尺寸代表行数
  • 要素类型可以不一样

6.数据挑选

1.按法规筛选

#提取男生(性别为M)的数据
MaleScore1<-subset(ReportCard,ReportCard$sex=="M")
Sel1<-ReportCard$sex=="M"
MaleScore1<-ReportCard[Sel1,]

#提取男生(性别为M)且平均成绩不及格(小于60分)的学生数据
MaleScore2<-subset(ReportCard,ReportCard$sex=="M" & ReportCard$avScore=="E")

  

2.随机筛选

sample(x, size, replace = FALSE, prob = NULL)#对数据按指定方式筛选观测样本,prob表示向量中各元素有不同的入样概率
set.seed()#希望抽样结果可以重复出现

  

set.seed(10000)
bh<-sample(1:60,size=30,replace=FALSE)
MySample<-ReportCard[bh,]
#以60个学生的行编号作为抽样依据,通过对行编号的随机抽样生成位置向量,实现对成绩的随机抽样

  

2.7.1 输入数据框

t <- data.frame(第一列,第二列,…,row.names = ,)

> t <- data.frame(id = c(1,2,3,4),grade = c(70,77,89,90))
> t
   id  grade
1  1    70
2  2    77
3  3    89
4  4    90
  • nrow和ncol能够分辨查看行和列数
  • 和矩阵的差距在于,每一列类型能够不相同
  • 能够用data.matrix()转变为矩阵

7.数码保存

write.table(ReportCard,file="ReportCard.txt",sep=" ",quote=FALSE,append=FALSE,na="NA",row.names=FALSE,col.names=TRUE)

2.8 日期和时间(未完待续卡塔 尔(阿拉伯语:قطر‎

date(),
用as.date()能够把二〇一四-07-20囤积为date格式。用weekdays()、montths()、quarters()能分别报告大家曾几何时哪十五月哪生龙活虎季度,julian()

  

哪些选出数据聚焦的某八个?

若是知道名称name,能够用$name来选出
例如

> x<- data.frame(v1 = 1:3,v2 = c('a','b','c'))
> x
  v1 v2
1  1  a
2  2  b
3  3  c
> x$v1
[1] 1 2 3
> x$v1>2
[1] FALSE FALSE  TRUE
> x[x$v1>1,]
  v1 v2
2  2  b
3  3  c
> x[which(x$v1>1),]
  v1 v2
2  2  b
3  3  c

8.说了算流程

图片 10

MyTable<-function(mytable){
 rows<-dim(mytable)[1]
 cols<-dim(mytable)[2]
 DataTable<-NULL
 for(i in 1:rows){
  for(j in 1:mytable$freq[i]){
   RowData<-mytable[i,c(1:(cols-1))]
   DataTable<-rbind(DataTable,RowData)
  }
 }
 row.names(DataTable)<-c(1:dim(DataTable)[1])
 return(DataTable)
}

Grade<-rep(c("B","C","D","E"),times=2)
Sex<-rep(c("M","F"),each=4)
Freq<-c(2,11,12,5,2,13,10,3)
Table<-data.frame(sex=Sex,grade=Grade,freq=Freq)
MyData<-MyTable(Table)

> Table
  sex grade freq
1   M     B    2
2   M     C   11
3   M     D   12
4   M     E    5
5   F     B    2
6   F     C   13
7   F     D   10
8   F     E    3

  

 

3. apply函数

apply体系函数的为主职能是对数组(array,能够是多维卡塔尔可能列表(list卡塔尔依照成分或因素构成的子集结实行迭代,并将日前因素或子集合作为参数调用某些钦赐函数。vector是后生可畏维的array,dataframe能够看成特殊的list。

那么些函数间的涉嫌

作用目标 在每个元素上应用 在子集合上应用
array apply tapply
list lapply(…) by

中间lapply(…)饱含风华正茂多元函数

lapply
   |
   | -> 简化版: sapply
   |             | -> 可设置返回值模板: vapply
   |             | -> 多变量版: mapply
   |
   | -> 递归版: rapply

除此以外vector相比奇异,vector是意气风发维的array,不过却不全是和array使用相通的函数。在按要素迭代的情景下,使用和list相似的lapply函数;而在按子集结迭代的场馆下,tapply和by都能用,只是再次来到值形式区别。

apply本着某后生可畏维度进行拍卖

apply(array, margin, FUN, ...)
在array上,沿margin方向,依次调用FUN。重返值为vector。margin表示数组援引的第几维下标(即array[index1,
index2,
…]中的第多少个index卡塔 尔(英语:State of Qatar),1对应该为1表示行,2表示列,c(1,2)表示行列。举例apply(x,2,sum)对列求和。

lapply 循环管理列表中的每三个因素

lapply(列表,函数/函数名,其余参数卡塔 尔(英语:State of Qatar)
sapply
和lapply同样,只是化简了结果,能用向量就用向量,能用矩阵就用矩阵。

mapply lapply的三回九转串版本

mapply(函数,数据,参数卡塔尔以下两句效果是近似的

list(rep(1,4),rep(2,3),rep(4,2),rep(4,1))
mapply(rep,1:4,4:1)

tapply对向量子集实行操作

tapply(向量,因子/因子列表,函数)
tapply(array, indices, margin, FUN=NULL, ...)

按indices中的值分组,把雷同值对应下标的array中的成分产生二个集中,应用到FUN。近似于group
by
indices的操作。如若FUN再次来到的是一个值,tapply再次来到vector;若FUN重临多个值,tapply重返list。vector或list的长短和indices中不相同值的个数相等。

当FUN为NULL的时候,重临三个长度和array中元素个数相等的vector,提醒分组的结果,vector中也就是的要素所对应的下标归属同大器晚成组。举个例子,重返c(1,
2, 1, 3, 2),
表示依据传入的indices,第1、3个要素作为豆蔻年华组,第2、5个要素作为意气风发组,首个成分作为风姿洒脱组。

例如

x <- c(1:4,2:5,3:6)
f <- gl(3, 4) #产生因子水平(分组),三个因子每因子5个
tapply(x,f,mean)

3.2排序

sort
order 给出排序后的下标,几个标准

x <- data.frame(v1 = 1:5, v2= 2:6, v3 = 3:7)
x[order(x$v1, x$v2),]

3.3计算数据音讯

head
tail
summary
str
table

sum
any
all

xtabs 交叉表