Capítulo 2 - Organização de dados em R

objetos de dados R

Divisão de tipo de objetos R

Particionando objetos R de uma perspectiva de armazenamento

(1) Tipo numérico
Tipo inteiro e tipo de número real; Tipo inteiro (Integer) é a forma de armazenamento de números inteiros, geralmente requerendo 2 bytes ou 4 bytes de espaço de armazenamento. O tipo de número real é usado para armazenar dados numéricos, incluindo casas decimais, e geralmente requer 4 bytes ou 8 bytes de espaço de armazenamento. Os dados numéricos em R são padronizados para números de precisão dupla.
(2) Tipo de caractere
, como nome e local de origem, é uma sequência de caracteres entre aspas duplas inglesas, denominada string.
(3) Tipo lógico
VERDADEIRO; FALSO

Dividir objetos R da perspectiva da estrutura de organização de dados

(1) Vetor
Vetor é a unidade básica da organização de dados do R. Do ponto de vista estatístico, um vetor corresponde a uma variável, armazenando vários valores de variáveis ​​com o mesmo tipo de armazenamento. A menos que especificado de outra forma, os vetores são vetores de coluna.
Fator (Factor) é um tipo especial de vetor.
(2) Matriz
Uma matriz é uma forma bidimensional usada para organizar múltiplas variáveis ​​com o mesmo tipo de armazenamento. As colunas da matriz são geralmente variáveis, observações de comportamento.
(3) Array
Um array é uma coleção de múltiplas tabelas bidimensionais, geralmente usadas para organizar dados de painel em estatísticas, etc.
(4) Quadro de dados
Um quadro de dados também é uma tabela bidimensional, semelhante a uma matriz, mas é usado para organizar e armazenar vários tipos de variáveis ​​múltiplas. Entre eles, as colunas do quadro de dados são geralmente variáveis, observações de comportamento.
(5) Lista
Uma coleção de múltiplos vetores, matrizes, arrays, quadros de dados e listas é uma lista. É usado principalmente para "empacotar" a integração de resultados de análises estatísticas relevantes.

Criar e gerenciar objetos R

criar objeto R

对象名<-R常量或R函数

Acesso a objetos R

print(对象名)

Exibir a estrutura de um objeto R

str(对象名)

Gerenciar objetos R

ls()当前工作空间中的对象名列表将显示在R的控制台窗口中
rm(对象名或对象名列表)对象名列表中包含多个对象名,各个对象之间用英文逗号分隔
remove(对象名)删除当前工作空间中的指定对象

A maneira básica de organização de dados do R

Vetores R e sua criação e acesso

is.vector(对象名)#判断对象是否为向量

vetor R mais simples

> #创建包含一个元素的向量
> V1<-100 #创建整数形式的数值型向量V1,存储类型默认为双精度型
> V1 #显示V1的对象值
[1] 100
> V2<-123.5 #创建实数形式的数值型向量V2,存储类型为双精度型
> V2
[1] 123.5
> V3<-"abcd" #创建字符串型向量V3
> print(V3) #显示V3对象值
[1] "abcd"
> (V4<-TRUE) #创建逻辑型向量V4,并直接显示对象值
[1] TRUE
> is.vector(V1) #判断对象V1是否为向量
[1] TRUE
> is.logical(V4) #判断对象V4的存储类型是否为逻辑型
[1] TRUE

①Se a instrução de atribuição for colocada entre parênteses, significa criar um objeto e exibir diretamente o valor do objeto
②Ao exibir valores de objeto, cada linha começará automaticamente com colchetes, como [1], o número entre colchetes indica o primeiro elemento é o número de elementos no objeto de vetor R.

Usando vetores R para organizar variáveis

SiteName<-c("东四","天坛","官园","万寿西宫","奥体中心","农展馆","万柳","北部新区","植物园","丰台花园",
	"云岗","古城","房山","大兴","亦庄","通州","顺义","昌平","门头沟","平谷","怀柔","密云","延庆","定陵",
	"八达岭","密云水库","东高村","永乐店","榆垡","琉璃河","前门","永定门内","西直门北","南三环","东四环")
SiteTypes<-c(rep("城区环境评价点",12),rep("郊区环境评价点",11),rep("对照点及区域点",7),rep("交通污染监控点",5))
> length(SiteName)
[1] 35
> length(SiteTypes)
[1] 35

rep("城区环境评价点",12)Indica a geração repetida de 12 pontos de avaliação do ambiente urbano

Acessando elementos em um vetor R

> a<-vector(length=10)#创建包含10个元素的向量a
> a#显示初始值
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> a[1]<-1#访问第一个元素,并赋值为1
> a[2:4]<-c(2,3,4)#访问第2至第4个元素,并赋值为2,3,4
> a
 [1] 1 2 3 4 0 0 0 0 0 0
> b<-seq(from=5,to=9,by=1)#生成一个取值5至9的序列给向量b
> b
[1] 5 6 7 8 9
> a[c(5:9,10)]<-c(b,10)
> a
 [1]  1  2  3  4  5  6  7  8  9 10
> b<-(2:4)#创建数值型位置向量b,依次取值为2,3,4
> a[b]#访问a中位置向量b所指位置(即2,3,4)上的元素
[1] 2 3 4
> b<-c(TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE)#创建逻辑型向量b
> a[b]#访问a中位置向量b取值为TRUE位置(即1,4)上的元素
[1] 1 4
> a[-1]#访问除第一个元素以外的元素
[1]  2  3  4  5  6  7  8  9 10
> a[-(2:4)]#访问除第2至第4个元素以外的元素
[1]  1  5  6  7  8  9 10
> a[-c(5:9,10)]#访问除第5至第9以及第10个元素以外的元素
[1] 1 2 3 4
> b<-(2:4)
> a[-b]#访问除位置向量b以外的元素
[1]  1  5  6  7  8  9 10
> ls()#显示当前工作空间中的对象列表
 [1] "a"                                 "b"                                                              
> rm(a,b)#删除当前工作空间中的对象a和对象b

Vetores especiais para R: fatores

> (a<-c("Poor","Improved","Excellent","Poor"))#创建包含4个元素的字符型向量a
[1] "Poor"      "Improved"  "Excellent" "Poor"     
> is.vector(a)#判断a是否为向量
[1] TRUE
> (b<-as.factor(a))#将字符型向量a转换为因子b并显示b
[1] Poor      Improved  Excellent Poor     
Levels: Excellent Improved Poor
> is.factor(b)#判断b是否为因子
[1] TRUE
> levels(b)#按因子水平值升序显示所对应的类别值
[1] "Excellent" "Improved"  "Poor"     
> typeof(b)#显示因子b的存储类型名
[1] "integer"
> (a<-c("Poor","Improved","Excellent","Poor"))#创建字符型向量a
[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

> (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

níveis é o valor original da categoria; rótulos é o novo valor da categoria

Matrizes e arrays R e sua criação e acesso

Combine vários vetores em uma matriz R


> Site<-cbind(SiteName,SiteTypes)
> is.matrix(Site)#判断对象是否为矩阵
[1] TRUE
> dim(Site)#获得矩阵的行数和列数
[1] 35  2

insira a descrição da imagem aqui

Converter vetores em matrizes R


> (a<-c("Poor","Improved","Excellent","Poor")) 
[1] "Poor"      "Improved"  "Excellent" "Poor"     
> data<-(1:30)#生成一个名为data的数值型向量
> data<-matrix(data,nrow=5,ncol=6,byrow=FALSE)#将向量a按列排列放置到5行6列的矩阵中
> data
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    6   11   16   21   26
[2,]    2    7   12   17   22   27
[3,]    3    8   13   18   23   28
[4,]    4    9   14   19   24   29
[5,]    5   10   15   20   25   30

Acessando elementos em uma matriz R

> data[2,3]#第2行第3列
[1] 12
> data[1:2,2:3]#访问第1行至第2行,第2列至第3列位置上的元素
     [,1] [,2]
[1,]    6   11
[2,]    7   12
> data[1:2,c(1,3)]#访问第1行至第2行,第1,3列位置上的元素
     [,1] [,2]
[1,]    1   11
[2,]    2   12

> data[2,]#访问第2行上的所有元素
[1]  2  7 12 17 22 27
> data[c(1,3),]#访问第1,3行上的所有元素
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    6   11   16   21   26
[2,]    3    8   13   18   23   28
> a<-c(TRUE,FALSE,TRUE,FALSE,FALSE)
> data[a,]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    6   11   16   21   26
[2,]    3    8   13   18   23   28
> data[,1:3]#访问1-3列上的所有元素
     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15
> a<-matrix(nrow=5,ncol=2)#创建一个5x2的矩阵,初始值默认为缺失值
> a
     [,1] [,2]
[1,]   NA   NA
[2,]   NA   NA
[3,]   NA   NA
[4,]   NA   NA
[5,]   NA   NA
> a[,1]<-seq(from=1,to=10,by=2)#给矩阵第1列赋值
> a[,2]<-seq(from=10,to=1,by=-2)#给矩阵第2列赋值
> a
     [,1] [,2]
[1,]    1   10
[2,]    3    8
[3,]    5    6
[4,]    7    4
[5,]    9    2

Criar e acessar matrizes R


> 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#数组a由3张行数为4列数为5的二维表组成

> is.array(a)#判断a是否为数组
[1] TRUE
> a[1:3,c(1,3),2]#第2张表1-3行,1,3列
   C1 C3
R1 21 29
R2 22 30
R3 23 31

Quadro de dados R e sua criação e acesso

Criar um quadro de dados R

> #创建数据框
> SiteName<-c("东四","天坛","官园","万寿西宫","奥体中心","农展馆","万柳","北部新区","植物园","丰台花园",
+ 	"云岗","古城","房山","大兴","亦庄","通州","顺义","昌平","门头沟","平谷","怀柔","密云","延庆","定陵",
+ 	"八达岭","密云水库","东高村","永乐店","榆垡","琉璃河","前门","永定门内","西直门北","南三环","东四环")
> SiteTypes<-c(rep("城区环境评价点",12),rep("郊区环境评价点",11),rep("对照点及区域点",7),rep("交通污染监控点",5))
> SiteX<-c(116.417,116.407,116.339,116.352,116.397,116.461,116.287,116.174,116.207,116.279,116.146,116.184,
+          116.136,116.404,116.506,116.663,116.655,116.23,116.106,117.1,116.628,116.832,115.972,
+          116.22,115.988,116.911,117.12,116.783,116.30,116.00,
+          116.395,116.394,116.349,116.368,116.483)
> SiteY<-c(39.929,39.886,39.929,39.878,39.982,39.937,39.987,40.09,40.002,39.863,39.824,39.914,
+         39.742,39.718,39.795,39.886,40.127,40.217,39.937,40.143,40.328,40.37,40.453,
+         40.292,40.365,40.499,40.10,39.712,39.52,39.58,
+         39.899,39.876,39.954,39.856,39.939)
> Site<-data.frame(Sitename=SiteName,Sitetypes=SiteTypes,Sitex=SiteX,Sitey=SiteY) 
> names(Site)#显示数据框的域名
[1] "Sitename"  "Sitetypes" "Sitex"     "Sitey"    
> str(Site)#显示对象的结构信息
'data.frame':	35 obs. of  4 variables:
 $ Sitename : chr  "东四" "天坛" "官园" "万寿西宫" ...
 $ Sitetypes: chr  "城区环境评价点" "城区环境评价点" "城区环境评价点" "城区环境评价点" ...
 $ Sitex    : num  116 116 116 116 116 ...
 $ Sitey    : num  39.9 39.9 39.9 39.9 40 ...
> is.data.frame(Site)#判断Site是否为数据框
[1] TRUE
> fix(Site)#显示部分数据内容

insira a descrição da imagem aqui

> head(Site)#仅显示数据框的前6行内容
  Sitename      Sitetypes   Sitex  Sitey
1     东四 城区环境评价点 116.417 39.929
2     天坛 城区环境评价点 116.407 39.886
3     官园 城区环境评价点 116.339 39.929
4 万寿西宫 城区环境评价点 116.352 39.878
5 奥体中心 城区环境评价点 116.397 39.982
6   农展馆 城区环境评价点 116.461 39.937
> head(Site$Sitename)#访问Sitename域且仅显示前6条内容
[1] "东四"     "天坛"     "官园"     "万寿西宫" "奥体中心" "农展馆"  
> tail(Site[["Sitename"]])#访问Sitename域且仅显示后6条内容
[1] "琉璃河"   "前门"     "永定门内" "西直门北" "南三环"   "东四环"  
> head(Site[1])#访问第一个域且仅显示前6条内容
  Sitename
1     东四
2     天坛
3     官园
4 万寿西宫
5 奥体中心
6   农展馆
> tail(Site[c("Sitename","Sitetypes")])#访问Sitename和Sitetypes域且仅显示后6条内容
   Sitename      Sitetypes
30   琉璃河 对照点及区域点
31     前门 交通污染监控点
32 永定门内 交通污染监控点
33 西直门北 交通污染监控点
34   南三环 交通污染监控点
35   东四环 交通污染监控点
> attach(Site)#绑定Site数据框
> head(Sitename)
[1] "东四"     "天坛"     "官园"     "万寿西宫" "奥体中心" "农展馆"  
> detach(Site)#解除Site数据框的绑定
> head(Sitename)
Error in head(Sitename) : object 'Sitename' not found

Listas R e sua criação e acesso

> a<-c(1,2,3)#创建向量a
> b<-matrix(nrow=5,ncol=2)#创建矩阵b
> 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))#创建数组c
> d<-list(L1=a,L2=b,L3=c)#创建列表d
> names(d)#显示列表d各成分名
[1] "L1" "L2" "L3"
> str(d)#显示对象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 ...
> is.list(d)#判断d是否为列表
[1] TRUE
> d$L1#访问列表d中的成分L1
[1] 1 2 3
> d[[2]]#访问列表d中的第二个成分(L2)
     [,1] [,2]
[1,]    1   10
[2,]    3    8
[3,]    5    6
[4,]    7    4
[5,]    9    2

Outros problemas com a organização de dados do R

Armazenamento de dados do objeto R

write.table(Site,file="监测点信息.txt",row.names=FALSE,col.names=FALSE)
row.names=FALSE,col.names=FALSE
不将行编号和变量名写入文本文件

insira a descrição da imagem aqui

Ler dados via teclado

> a<-scan()#R将在控制台窗口等待用户输入数据,每个数据以回车键分隔
1: 10
2: 20
3: 30
4: 
Read 3 items
> a
[1] 10 20 30

Quando a entrada estiver fechada, basta pressionar a tecla Enter sem inserir o conteúdo

Compartilhamento de pacotes de dados que acompanham o R

data(), o nome do conjunto de dados exibido e as informações de descrição são mostrados na figura abaixo
insira a descrição da imagem aqui

data("数据集名")#指定加载使用某个数据集

Estruturas de dados e organização R para casos de Big Data

Leia os dados do arquivo de texto no quadro de dados R

> getwd()#获取当前工作目录
[1] "D:/Program Files/RStudio/Projects"
> setwd("./课程数据集")#改变工作目录
> MyData<-read.table(file = "空气质量.txt",header = TRUE,sep=" ",stringsAsFactors = FALSE)
> str(MyData)
'data.frame':	12705 obs. of  11 variables:
 $ SiteName : chr  "奥体中心" "奥体中心" "奥体中心" "奥体中心" ...
 $ date     : int  20160101 20160626 20160505 20160307 20160907 20160314 20160717 20160122 20161119 20160526 ...
 $ PM2.5    : num  165 39.9 48.7 50 40.2 ...
 $ AQI      : num  154.6 68.1 55.1 120.8 67.9 ...
 $ CO       : num  3.929 0.454 0.946 0.992 0.607 ...
 $ NO2      : num  122.6 35.1 41 30.4 43.7 ...
 $ O3       : num  10.7 119.2 82.1 53.3 106.9 ...
 $ SO2      : num  45.67 4.88 14.83 14.83 4 ...
 $ SiteTypes: chr  "城区环境评价点" "城区环境评价点" "城区环境评价点" "城区环境评价点" ...
 $ SiteX    : num  116 116 116 116 116 ...
 $ SiteY    : num  40 40 40 40 40 ...

Acho que você gosta

Origin blog.csdn.net/weixin_46322367/article/details/125163358
Recomendado
Clasificación