Estrutura de dados e conversão em linguagem R

Artigos e códigos foram arquivados em [Github warehouse: https://github.com/timerring/dive-into-AI ] ou a conta pública [AIShareLab] também pode ser obtida respondendo à linguagem R.

A primeira etapa em qualquer análise de dados é criar um conjunto de dados no formato desejado. Em R, esta tarefa consiste em duas etapas: primeiro escolha uma estrutura de dados para armazenar os dados e, em seguida, insira ou importe os dados para essa estrutura de dados. A seguir descrevemos as várias estruturas de dados usadas em R para armazenar dados.

Estruturas de dados R

  • Na maioria dos casos, os dados estruturados são um conjunto de dados que consiste em muitas linhas e muitas colunas. Em R, esse conjunto de dados é chamado de quadro de dados .
  • Antes de aprender sobre data frames, vamos nos familiarizar com algumas estruturas de dados usadas para armazenar dados: vetores, fatores, matrizes, arrays e listas .

1.1 Vetor

Um vetor é uma matriz unidimensional usada para armazenar dados numéricos, de caracteres e lógicos . Os escalares podem ser considerados vetores com apenas um elemento. A função c( )pode ser usada para criar vetores, por exemplo:

x1 <- c(2, 4, 1, -2, 5)
x2 <- c("one", "two", "three")
x3 <- c(TRUE, FALSE, TRUE, FALSE)

Aqui x1 é um vetor numérico, x2 é um vetor de caracteres e x3 é um vetor lógico. Os tipos de dados em cada vetor devem ser consistentes . Se você deseja criar vetores regulares, R fornece algumas operações e funções convenientes, como:

x4 <- 1:5     # 等价于x4 <- c(1, 2, 3, 4, 5)
x5 <- seq(from = 2, to = 10, by = 2)  # 等价于x5 <- c(2, 4, 6, 8, 10)
x6 <- rep("a", times = 4)  # 等价于x6 <- c("a", "a", "a", "a")

Às vezes queremos usar apenas uma determinada parte do vetor, ou seja, selecionar um subconjunto do vetor . Suponha que exista um vetor de inteiros de 3 a 100 com um tamanho de passo de 7, qual é o valor do 5º número?

x <- seq(from = 3, to = 100, by = 7)
# 显示第5个元素
x[5]
# 显示第4,6,7个元素
x[c(4, 6, 7)]

Os números entre colchetes "[]" são chamados de 下标, que especificam a posição do índice do vetor. No comando acima, x[5] representa o 5º elemento do vetor, cujo valor é 31.

O vetor no subscrito pode assumir um valor negativo, o que significa remover o elemento na posição especificada. Por exemplo, para remover os primeiros 4 elementos de x, você pode inserir o seguinte código (observe os parênteses no comando):

x[-(1:4)]

As operações em R são vetorizadas, por exemplo:

weight <- c(68, 72, 57, 90, 65, 52)
height <- c(1.75, 1.80, 1.65, 1.90, 1.72, 1.65)
bmi <- weight / height ^ 2
bmi

No processo de cálculo do IMC acima, o operador "^" é usado ciclicamente, portanto o resultado calculado ainda é um vetor. Se os comprimentos dos vetores envolvidos na operação forem inconsistentes, R completará automaticamente o cálculo.A regra de conclusão é alternar vetores curtos e emitir uma mensagem de aviso ao mesmo tempo.

a <- 1:5
b <- 1:3
a + b
# Warning message in a + b:
# “longer object length is not a multiple of shorter object length”
# 2 4 6 5 7

Funções estatísticas comumente usadas

função descrever
comprimento (x) encontre o número de elementos em x
média(x) encontre a média aritmética de x
mediana (x) encontre a mediana de x
lá (x) encontre a variância amostral de x
sd(x) encontre o desvio padrão amostral de x
intervalo (x) Encontre a distância do alcance de x
sirigaita) encontre o valor mínimo de x
máximo(x) encontre o valor máximo de x
quantil (x) encontre o quantil de x
soma (x) encontre a soma de todos os elementos em x
escala (x) normalizar x

Fator 1,2

Em geral, as variáveis ​​podem ser divididas em numéricas, nominais e ordinais.

Variáveis ​​​​nominais são variáveis ​​​​categóricas que não possuem uma relação de ordem , como sexo, tipo sanguíneo, etnia de uma pessoa, etc. A variável ordinal é uma variável categórica com relação hierárquica e sequencial , como a condição do paciente (pior, melhor, muito bom). Variáveis ​​​​nominais e ordinais são chamadas de fatores em R.

Os fatores são muito importantes em R porque determinam como os dados são apresentados e analisados. Ao armazenar dados, os fatores geralmente são armazenados como vetores de números inteiros . Portanto, antes da análise dos dados, muitas vezes é necessário factor( )convertê-los em fatores por meio de funções.

# 先定义了一个变量 sex 表示性别,假设其取值 1 表示男性,2 表示女性。
sex <- c(1, 2, 1, 1, 2, 1, 2)
# 接着用函数 factor( ) 将变量 sex 转换成了因子并存为对象 sex.f,其中参数 levels 表示原变量的分类标签值,参数 labels 表示因子取值的标签。
sex.f <- factor(sex,
                levels = c(1, 2),
                labels = c("Male", "Female"))
sex.f
# ============ 输出 =============
# Male Female Male Male Female Male Female
# **Levels**:
# 'Male''Female' 

Observe que esses dois parâmetros precisam corresponder um a um ao atribuir valores, e R irá associá-los. A diferença entre uma variável de fator e uma variável de caráter geral é que ela possui um atributo de nível. As propriedades dos fatores podem ser visualizadas usando funções levels( ):

levels(sex.f)
# 'Male''Female' 

Alterar a ordem de classificação dos níveis dos fatores → alterar o grupo de referência

Nos modelos estatísticos, R considera o primeiro nível de uma variável fatorial como grupo de referência. Muitas vezes precisamos alterar a ordem de disposição dos níveis dos fatores para alterar o grupo de referência, o que pode ser conseguido por dois métodos. O primeiro método é alterar a ordem dos níveis e rótulos dos parâmetros na função factor( ) , por exemplo:

sex.f1 <- factor(sex, levels = c(2, 1), labels = c("Female", "Male"))
sex.f1
# Male Female Male Male Female Male Female
# **Levels**:
# 'Female' 'Male'

A segunda maneira é usar uma função relevel( ):

sex.f1 <- relevel(sex.f, ref = "Female")
sex.f1
# Male Female Male Male Female Male Female
# **Levels**:
# 'Female' 'Male'

fator de ordem: ordenado = TRUE

Para representar um fator ordenado, o parâmetro ordenado = TRUE precisa ser especificado na função factor ( ) . Por exemplo:

status <- c(1, 2, 2, 3, 1, 2, 2)
status.f <- factor(
  status,
  levels = c(1, 2, 3),
  labels = c("Poor", "Improved", "Excellent"),
  ordered = TRUE
)
status.f
# PoorImprovedImprovedExcellentPoorImprovedImproved

1.3 Matriz

Uma matriz é uma matriz bidimensional que consiste em linhas e colunas. Cada elemento da matriz possui o mesmo modo (numérico, caractere ou lógico). Na maioria dos casos, os elementos da matriz são numéricos, que possuem muitas propriedades matemáticas e métodos de operação, e podem ser usados ​​para cálculos estatísticos, como análise fatorial, modelos lineares generalizados, etc.

1.3.1 Criar: matriz( )

Funções matrix( )são frequentemente usadas para criar matrizes, por exemplo:

M <- matrix(1:6, nrow = 2)
M

R calcula automaticamente o número de colunas com base no comprimento do vetor e no número de linhas definido pelo parâmetro nrow. O parâmetro byrow tem como padrão FALSE, ou seja, os valores são organizados por coluna, caso precise organizar por linha basta definir o parâmetro byrow como TRUE .

Operações matriciais comuns podem ser implementadas em R, como adição de matrizes, multiplicação de matrizes, inversão de matrizes, transposição de matrizes, determinante de matriz quadrada, autovalor e autovetor de matriz quadrada, etc.

1.3.2 Multiplicação: %*%

Na multiplicação de matrizes, o número de colunas da primeira matriz deve ser igual ao número de linhas da segunda matriz , e seu operador é %*%.

Primeiro crie duas matrizes:

mat1 <- matrix(1:6, nrow = 3)
mat1
mat2 <- matrix(5:10, nrow = 2)
mat2
# 函数dim( )可以得到矩阵的维数,即行数和列数
dim(mat1)
# 32
dim(mat2)
# 23
mat1 %*% mat2

1.3.3 Transposição: t( )

A operação de transposição de uma matriz consiste em trocar as linhas e colunas da matriz. Por exemplo, encontre a transposta da matriz mat1:

t(mat1)

1.3.4 Matriz determinante e inversa: det( ), solve( )

Encontrar a matriz determinante e inversa de uma matriz quadrada pode ser implementado usando funções e funções respectivamente, por exemplo:det( )solve( )

mat3 <- matrix(1:4, nrow = 2)
det(mat3)
# -2

1.3.5 Soma ou média por linha e coluna: rowSums, colSums, rowMeans, ColMeans

Por exemplo:

rowSums(mat1)
colSums(mat1)
rowMeans(mat1)
colMeans(mat1)

1.4 Matrizes

O chamado array (array) geralmente se refere a um array multidimensional, que é semelhante a uma matriz, mas a dimensão é maior que 2 . Matrizes têm uma propriedade de dimensão especial (dim) .

O comando a seguir define um array após adicionar dimensões a um vetor, preste atenção na ordem dos valores.

Como o array exibido no notebook não é muito bonito, é recomendável utilizá-lo print(). O código a seguir adicionará adicionalmente print() ao exibir o array.

A <- 1:24
dim(A) <- c(3, 4, 2)
# A # notebook 上数组显示不太正常,使用 print() 可以解决
print(A)

Os arrays acima também podem array( )ser criados com funções e adicionar nomes e rótulos a cada dimensão.

dim1 <- c("A1", "A2", "A3")
dim2 <- c("B1", "B2", "B3", "B4")
dim3 <- c("C1", "C2")
print(array(1:24, dim = c(3, 4, 2), dimnames = list(dim1, dim2, dim3)))

Lista 1,5

Lista (lista) é a estrutura de dados mais flexível e complexa do R, que pode ser composta por diferentes tipos de objetos. Por exemplo, pode ser uma combinação de vetores, matrizes, tabelas e objetos de qualquer tipo .

list1 <- list(a = 1, b = 1:5, c = c("red", "blue", "green"))
list1
# $a
# 1
# $b
# 1 2 3 4 5
# $c
# 'red''blue''green'

Criar listas não é uma tarefa comum na análise normal de dados. O valor de retorno de muitas funções é uma lista . Por exemplo:

# 为了使结果具有可重复性,我们在该命令前用函数 set.seed( ) 设置了生成随机数的种子。如果不设定种子,每次显示的结果很可能不同。
set.seed(123)
# 用函数 rnorm( ) 从标准正态分布中生成了一个由 10 个数组成的随机样本。
dat <- rnorm(10) 
# 用函数 boxplot( ) 对这个随机样本作**箱线图**,并把结果保存为 bp。
bp <- boxplot(dat)
# 函数 class( ) 用于查看对象的类型,这里 bp 是一个列表。
class(bp)
# 'list'

Confira o que está nesta lista:

A lista bp aqui contém vários objetos, se você deseja visualizar ou utilizar um determinado objeto, basta referenciá- $lo com o símbolo " ". Por exemplo, para visualizar o conteúdo das estatísticas do objeto na lista bp, você digitaria bp$stats. Se você estiver interessado em outros objetos da lista, consulte boxplot.statsa documentação do .

1.6 Quadro de dados

Um quadro de dados é uma estrutura bidimensional que consiste em linhas e colunas, onde as linhas representam observações ou registros e as colunas representam variáveis ​​ou indicadores. Os quadros de dados são semelhantes aos conjuntos de dados do Excel, SAS e SPSS. Os quadros de dados são muito semelhantes às matrizes, e muitas operações de matrizes também se aplicam aos quadros de dados, como a seleção de subconjuntos.

Ao contrário de uma matriz, diferentes colunas em um quadro de dados podem ser dados em diferentes modos (numérico, caractere, etc.). Os frames de dados podem ser criados com a função data.frame(). Por exemplo, o código a seguir cria um quadro de dados com 5 observações e 4 variáveis:

ID <- 1:5
sex <- c("male", "female", "male", "female", "male")
age <- c(25, 34, 38, 28, 52)
pain <- c(1, 3, 2, 2, 3)      
pain.f <- factor(pain, levels = 1:3, labels = c("mild", "medium", "severe"))   
patients <- data.frame(ID, sex, age, pain.f)
patients

Um quadro de dados é essencialmente uma lista. Para exibir ou usar uma variável (coluna) do quadro de dados, você pode usar $o símbolo mais o nome da variável. Por exemplo:

patients$age
mean(patients$age)

A maioria dos conjuntos de dados médicos estruturados são apresentados como quadros de dados, portanto os quadros de dados são as estruturas de dados mais comumente processadas.

Conversão de tipo de dados: is., as.

Ao realizar a análise de dados, os analistas precisam estar familiarizados com o tipo de dados, pois a escolha do método de análise de dados está intimamente relacionada ao tipo de dados. R fornece uma série de funções para determinar o tipo de dados de um objeto, bem como funções para converter um tipo de dados em outro . Todas essas funções existem na base do pacote básico e algumas das funções comumente usadas estão listadas abaixo:

Julgamento do tipo de dados e função de conversão

julgamento converter
é.numérico() como.numeric()
é.character() como.personagem()
é.lógico() as.lógico()
é.fator() como.fator()
é.vector() como.vetor()
é.matriz() como.matriz()
é.array() como.array()
é.data.frame() como.data.frame()
é.lista() como.lista()
é.tabela() como.tabela()

Funções que começam is.com retornam TRUE ou FALSE, e as.funções que começam com convertem o objeto no tipo correspondente. Por exemplo:

x <- c(2, 5, 8)
is.numeric(x)
# TRUE
is.vector(x)
# TRUE
y <- as.character(x)
y
# '2''5''8'
is.numeric(y)
# FALSE
is.character(y)
# TRUE
z <- c(TRUE, FALSE, TRUE, FALSE)
is.logical(z)
# TRUE
as.numeric(z)
# 1 0 1 0

Referência: Zhao Jun " Combate Prático da Análise de Dados Médicos da Linguagem R "

Acho que você gosta

Origin blog.csdn.net/m0_52316372/article/details/132372102
Recomendado
Clasificación