Lenguaje R: un minucioso resumen de conocimientos básicos

Concebir

En cuanto al lenguaje R, quiero escribirlo en tres partes.

escribir delante

Debido a que esta es la primera vez que aprendo el lenguaje R, es inevitable que haya deficiencias. Tengan paciencia conmigo. Este documento se actualizará a tiempo y se agregarán algunas ideas personales.

Si tienes alguna duda, puedes comentar directamente o contactar conmigo. Por supuesto, el requisito previo para responder es¡Eres un poco así!

De hecho, R no es el foco, y mucho menos el punto final. R es mucho mejor que Python, C++ y Java, ¿verdad? R no requiere un examen, solo requiere que resuelvas problemas.

La cuestión es,Tienes que tener una idea., necesita saber qué problemas encuentra y encontrar soluciones a los problemas. Por ejemplo:

Si desea procesar Excel, debe abrirlo y buscar en Baidu.Cómo abrir Excel en lenguaje RSi tienes problemas, puedes resolverlos, hay muchos métodos en línea.

La solución correcta: Aaron, ¿por qué los archivos csv aparecen confusos cuando los escribo? (Vaya, Aaron puede manejar otro ERROR)

Solución incorrecta: Aaron, no sé cómo hacer esta tarea. Por favor, ayúdame a escribirla. . . (Nadie llama a Aaron a menos que le des dinero❤️)

Agradecimiento especial a: Profesor Yang Qingyong de la Escuela de Información

Referencia: Profesor Yang Qingyong PPT

¿Qué puede hacer el lenguaje R?

Cuando se trata de esto, la mayoría de la gente simplemente dice: haz un dibujo. Algunas personas también dirán analizar datos.

Aquí surge la pregunta: ¿Crees que el lenguaje R es un curso de agua? Solía ​​​​pensar que sí y sentía que el lenguaje R no era importante, pero luego descubrí que era divertido.

De hecho, se trata de que los profesores sigan a las personas adecuadas y hagan las cosas correctas. Si sigues a la persona equivocada, será difícil hacer lo correcto.

En primer lugar, el lenguaje R no se limita al dibujo, por supuesto, es excelente para dibujar, al menos mucho mejor que Python.

En segundo lugar, hay muchos paquetes en R y hay muchas funciones escritas que podemos llamar, lo cual es muy conveniente para el análisis de datos e incluso el aprendizaje automático, y también es muy conveniente para pruebas y llamadas de modelos posteriores.

Creo que R no es la clave. La clave es el conocimiento teórico, especialmente el conocimiento del análisis estadístico. R es solo una herramienta y el problema es el más fundamental. Hay un dicho famoso en la industria informática:

El lenguaje es sólo una herramienta, el problema es el más fundamental.

Operaciones básicas

Cómo instalar y cargar paquetes en R

1. Paquete de instalación: entrada de línea de comando

install.packages("包的名字")
# 其实还有使用工具安装的,这个命令可以安装大部分包,其他个别的有问题都可以百度到解决方案

2. Cargue el paquete: ingréselo en la línea de comando o en el código.

library(包的名字) #不用写引号哦

Ver código de ayuda

?solve  # 可以直接使用一个"?"来查看帮助文档
example(solve)  # 使用example()来查看该函数的使用范例
help(solve)  # 查看solve()函数的帮助文档

otro

help.start() # 查看全部帮助文档,或者进入http://127.0.0.1:27003/doc/html/index.html
??solve  # 查看某一确定的关键字内容文档,使用两个问号"??" 

producción

print no puede especificar sep, pero cat sí

print("我爱帅帅龙");
cat("我爱","帅帅龙",sep="love");

Concatenación de cadenas

Se puede especificar sep para devolver la cadena concatenada, y los tipos que no son cadenas se convierten automáticamente en cadenas.

a = paste("我爱","帅帅龙",1,"万年")

Otras operaciones comunes

ctrl+L  # 清屏
rm(list=ls())  # 清除内存空间
getwd()  # 查看工作目录
setwd()  # 设置临时目录

código de prueba

dibujar corazon chino

library("fun")
library("rgl")

demo("ChinaHeart2D")
demo("ChinaHeart3D")

nube de palabras

library(wordcloud2)
wordcloud2(demoFreq)
wordcloud2(demoFreqC)

gramática básica

Asignación

a = 10;# 我个人喜欢这样,新版本兼容很好,大家不用想太多,直接冲就完事了
b <- 10;# 中规中矩的赋值,表示流向,数据流向变量,也可以写成10 -> b

Crear vectores irregulares

No te preocupes por lo que es un vector, simplemente trátalo como un contenedor, similar a la lista de Python.

a = c("我","爱","帅帅龙")

Crear vectores con ciertas reglas.

Rep significa repetir, lo que significa repetición.

x <- seq(1, 10, by = 0.5)  # 得到1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10.0
x <- seq(1, 10, length = 21)  # 从1到10,得到21个等间距数
x <- rep(2:5, 2)  # 得到2 3 4 5 2 3 4 5
x <- rep(2:5, rep(2, 4))  # 得到2 2 3 3 4 4 5 5

Crea un vector continuo de números.

a = c(1:5)  # 可以得到1 2 3 4 5

operador

De hecho, no hay nada interesante que leer a partir de ahora, se recomienda no leer esta parte, solo búsquela nuevamente cuando encuentre problemas o mire hacia atrás.

数值运算符
+  -  *  /
^  # 乘方
%%  # 求余
%/%  # 整除

关系运算符
>  <  ==  !=  >=  <=

逻辑运算符
&&  ||  !

其他运算符
:  # 冒号运算符,用于创建一系列数字的向量。
%in%  # 用于判断元素是否在向量里,返回布尔值,有的话返回 TRUE,没有返回 FALSE。
%*%  # 用于矩阵与它转置的矩阵相乘。

Funciones matemáticas

Algunas funciones matemáticas comunes son:

función ilustrar
raíz cuadrada (n) raíz cuadrada de n
exp(n) La constante natural e elevada a la enésima potencia,
iniciar sesión(m,n) La función logarítmica de n, devuelve la potencia de n igual a m
registro10(m) Equivalente a log(m,10)

La función de ronda en R puede "redondear cinco" en algunos casos. Cuando la cifra de redondeo sea un número par, también se redondeará cinco.

nombre modelo paramétrico significado
redondo (norte) Ronda norte
redondo (norte, metro) Redondear n a m decimales
techo (norte) Redondear y subir
piso (norte) Redondear hacia abajo

Funciones trigonométricas

levemente

Generar letras mayúsculas y minúsculas

a = letters[1:4]  # letters为生成指定范围个小写字母向量。
b = LETTERS[1:4]  # LETTERS为生成指定范围个大写字母向量。

Los valores faltantes se convierten a 0.

x [!is.na(x)]=0

Constantes comunes

  • 26 LETRAS MAYÚSCULAS
  • 26 letras minúsculas
  • Abreviatura del mes mes.abb
  • Nombre del mesnombre.mes
  • valor pi

Intercambiar números y cadenas.

Convertir cadena a tipo numérico

as.integer("12.3")  # 字符串转整数,得到12
as.double("11.666")  # 字符串转小数,得到11.666

Convertir tipo numérico a texto

Usar pegar()

a = paste(1)  # 

formatC() genera valores como cadenas

formatC(1/3, format = "e", digits = 4)  # digits表示小数点位数
formatC(1/3, format = "f", digits = 4)

como.carácter()

a=as.character(66)

control de procesos

si declaración

x <- 50L
if(is.integer(x)) {
   print("X 是一个整数")
} else {
   print("X 不是一个整数")
}

el interruptor no introduce

mientras bucle

a = 1
while(a<5){
    print('hello')
}

en bucle

El lenguaje R es particularmente difícil de procesar para bucles. Bueno, es difícil de todos modos. No sé por qué.

a = c([1:4])

for(i in a){
    print(i)
}

repetir bucle

Repetir significa repetir.

a = 1
sum = 0
repeat{
  if(sum>10){
    break  # break终止循环,next继续下一次循环,就好像c++或python的continue
  }
  sum=sum+a
  a=a+1
}
print(sum)

Estructuras de datos comunes

Hermano Meng, ¡vamos al grano! ! !
Insertar descripción de la imagen aquí

Vector:c()

Por desgracia, ¿qué es exactamente un vector? De hecho, puede entenderse simplemente como una lista de Python, pero de hecho hay una implementación de lista en R, que se llama lista, y puede almacenar diferentes tipos.

Características:

  • Solo se puede almacenar un tipo de elemento, si hay números y cadenas, se convertirán automáticamente en cadenas.
  • Puede usar el índice para obtener elementos (el índice comienza desde 1)
  • Puede utilizar la operación de corte para interceptar un fragmento, y ambos extremos son intervalos cerrados.

Crear vector

La gramática básica ya se ha mencionado antes.

Agregar valor usando anexar

good_sample_p <- append(good_sample_p,p)

Operaciones de suma, resta, multiplicación y división de vectores

Una cosa interesante es la regla de reciclaje de vectores, como a = c (1,2,3), b = c (4,5), en este momento, si se usa a + b, aparecerá un mensaje de advertencia, pero no reportará ningún error.

Tomemos como ejemplo a+b: en realidad es (1+4, 2+5, 3+4), ahora entiendes qué es el reciclaje.

Algunas funciones comúnmente utilizadas

  • sqrt(x), log(x), exp(x), sin(x), cos(x), tan(x), abs(x) representan raíces cuadradas, logaritmos, exponenciales, funciones trigonométricas y valores absolutos respectivamente. .
  • sort(x, decreciente=FALSE) devuelve un vector resultante ordenado de pequeño a grande por los elementos de x.
  • order(x) es un vector de subíndices de elementos tales que x está ordenado de pequeño a grande
  • ordenar(x) es equivalente a x[orden(x)]
  • numérico (n): representa un vector cero de longitud n
  • all(log(10 * x) > x): determina si un vector lógico es verdadero
  • any(log(10 * x) > x): determina si existe un valor verdadero
  • is.na(c(1, 2, NA)): determina si cada elemento de x es un valor faltante

vector lógico

Los vectores pueden tomar valores lógicos, como

y <- c(TRUE, TRUE, FALSE)
x = c(1, 4, 6.25)
y = x > 3
# y的值是
[1] FALSE TRUE TRUE

También se pueden comparar dos vectores.

x = c(1, 4, 6.25)
log(10 * x)
[1] 2.302585 3.688879 4.135167
log(10 * x) > x
[1]  TRUE FALSE FALSE
比较运算符:<,<=,>,>=,==(相等),!=(不等)
逻辑向量可以进行与(&)[表示同时满足],或(|)[两者之一]运算.

También puede forzar que el valor lógico se convierta en un valor entero, como por ejemplo: VERDADERO se convierte en 1, FALSO se convierte en 0,

x = c(1, 4, 6.25)

c(0, 1)[(x > 3) + 1]  # 下面我会对这句话解释一下
[1] 0 1 1

(x>3)+1
[1] 1 2 2

Explicaré esta línea de código c(0, 1)[(x > 3) + 1] aquí.

(x > 3) obtendrá el vector lógico [F ,T ,T]

(x>3)+1 forzará el valor lógico a un valor entero para obtener [1,2,2]

Luego úselo como índice del vector anterior, c(0,1), para obtener [0,1,1]

vector de caracteres

Es decir, hay caracteres en el vector (¿No es muy sencilla esta explicación?)

a = c("我爱",'帅帅龙')  # 如果同时出现了字符串和数字,数字会转为字符串的哦

La función pegar se usa para concatenar sus variables independientes en cadenas, usando los delimitadores correspondientes en el medio. Se ha introducido el empalme de cadenas anterior, ¿de acuerdo?

vector complejo

No se usa mucho, entonces, ¿por qué no simplemente... no lo presentamos, está bien?

índice vectorial

Hermano lindo! ¡Despierta, esto es muy importante!

Los subíndices de vectores en R comienzan desde 1, lo cual es inconsistente con el software estadístico o matemático común. ¡Los subíndices de vectores en lenguaje C, Python y otros lenguajes de programación comienzan desde 0!

No te dejes llevar por Python: el índice negativo de R indica qué elemento eliminar.

x = c(42, 7, 64, 9)
x[2]  # 访问第2个元素
x[3] = -1  # 修改第三个数据的值
x[-4]  # 删除第四个元素
x[x < 10]  # 表示选取x<10的元素
x[c(1, 4)]  # 向量索引,是不是很神奇?

Al definir un vector, puede agregar nombres a los elementos.

ages <- c(Li = 23, Zhang = 33, Wang = 45)
# ages为
Li   Zhang  Wang 
23    33         45 
# 访问时可以用通常的方法,还可以用元素名访问
ages["Zhang"]
# 还可以定义向量后,再后加上名字
age1 = c(21, 34, 56)
names(age1) = c("Zhang", "Ding", "Liu")

matriz:matriz

matriz (datos = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

  • Los datos son los datos de la matriz, generalmente un vector.
  • nrow es el número de filas, ncol es el número de columnas
  • Cuando byrow es VERDADERO, será 1, 2, 3, 4 horizontalmente; de ​​lo contrario, será 1, 2, 3 verticalmente.

Crear matriz

matrix(1:12,ncol=4,byrow=TRUE)
# 得到的数据
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12

Funciones de uso común

  • head(a,10) Ver las primeras 10 filas de la matriz

  • tail(a,10) Ver las últimas diez filas de la matriz

  • cbind(): fusionar arriba y abajo

  • rbind(): fusionar izquierda y derecha

  • c(A): Muestra todos los vectores de A, que son vectores enderezados por columnas.

  • det(A): Encuentra el valor del determinante

  • resolver(A): encontrar la inversa

  • eigen(A): valores propios y vectores propios

B=rbind(c(1,2),c(3,4))
C=cbind(c(11,12),c(13,14))
D=rbind(B,C)
E=cbind(B,C)

Operaciones matriciales

Similar a la suma, resta, multiplicación y división de vectores.

Las operaciones participantes generalmente tienen la misma forma, y ​​también se pueden usar vectores y matrices con formas inconsistentes para cuatro operaciones aritméticas. La regla es que los datos de la matriz se operan sobre los elementos correspondientes del vector (enderezados por columnas).

Acceder a elementos y submatrices de matrices.

  • A[2,3]# acceso es el (2,3) elemento 7 de la matriz
  • A[i,] #Accede a la i-ésima fila, A[,j] #Accede a la j-ésima columna
  • A[,c(1,2,3)] primeras tres columnas
  • A[,c('nombre1','nombre2')] especifica el nombre de la columna

Cambie el nombre de las etiquetas de filas y columnas de la matriz.

rownames(A)  <- c("a", "b", "c")
colnames(A) <- paste("X", 1:4, sep="")

aplicar función

Si desea realizar algún cálculo en una determinada fila (columna) de una matriz, puede utilizar la función de aplicación: aplicar (x, margen, diversión,…)

x representa la matriz, margen = 1 representa el cálculo para cada fila, margen = 2 representa el cálculo para cada columna y diversión es la función utilizada para el cálculo.

apply(A, 1, sum)
apply(A, 2, mean)

factor: factor

factor(x, niveles = ordenar(único(x), na.last = VERDADERO), etiquetas, excluir = NA, ordenado = FALSO)

Se utiliza para codificar un vector en un factor.

Crear factores

sex = c("M","F","M","M","F")
sexf = factor(sex);sexf

Funciones de uso común

  • is.factor() comprueba si el objeto es un factor
  • as.factor() convierte vectores en factores
  • Los niveles (x) pueden obtener los niveles de los factores.
  • La tabla (x) cuenta la frecuencia de varios tipos de datos.

función tapply()

tapply(x, ÍNDICE, DIVERSIÓN=NULL,…,simplificar=VERDADERO)

  • x es un objeto, generalmente un vector
  • ÍNDICE es un factor con la misma longitud que X
  • FUN es la función a calcular

Conociendo el sexo de 5 estudiantes y también la altura de estos 5 estudiantes, encuentre la altura promedio de los grupos.

sex = c("M","F","M","M","F")
height = c(174, 165, 180, 171, 160)
tapply(height, sex, mean)

función gl()

gl(n, k, longitud = n*k, etiquetas = seq_len(n), ordenado = FALSO)

gl() se puede utilizar para generar factores convenientemente

  • n es el número de niveles
  • k es el número de repeticiones
  • longitud es la longitud del resultado
  • etiquetas es un vector n-dimensional que representa niveles de factores
  • ordenado es una variable lógica que indica si es un factor ordenado, el valor predeterminado es FALSO.

Lista: lista

Crear lista

rec <- list(name="黎明", age=30, scores=c(85,76,90));rec
# 得到的数据
$name
[1] "黎明"

$age
[1] 30

$scores
[1] 85 76 90

Citar y modificar listas

Se puede hacer referencia a los elementos de la lista con "nombre de lista [[subíndice]]". Las listas son diferentes de los vectores. Sólo se puede hacer referencia a un elemento a la vez. Por ejemplo, rec[[1:2]] no está permitido.

rec <- list(name="黎明", age=30, scores=c(85,76,90));rec
rec[[2]]  # 得到30
rec[[3]][2]  # 得到第三个元素的第二个元素,即76
# 若指定了元素的名字,则引用列表元素还可以用它的名字作为下标,
rec$age
rec[["age"]]
rec[[2]]=11  # 把30修改为11

Nota: Se permite el uso de "nombre de lista [subíndice]" o "nombre de lista [rango de subíndice]", pero a diferencia del significado anterior, sigue siendo una lista.

Marco de datos: marco.de.datos

Muchos puntos importantes

Un marco de datos suele ser una matriz de datos, pero las columnas de una matriz pueden ser de diferentes tipos. Cada columna del marco de datos es una variable y cada fila es una observación.

Esto es similar al DataFrame en los pandas de Python.

Generar marco de datos

d = data.frame(name=c('黎明','周杰伦','刘德华'),age=c(30,35,28),height=c(180,175,173))
# d的值
    name age height
1   黎明  30    180
2 周杰伦  35    175
3 刘德华  28    173

as.data.frame(list) puede convertir la lista en data.frame(), porque la lista no puede especificar un nombre.

Referencia del marco de datos

d = data.frame(name=c('黎明','周杰伦','刘德华'),age=c(30,35,28),height=c(180,175,173))
d[1:2, 2:3]  # 得到前两行,2,3列的数据
d[["age"]]  # 获取age这一列的数据
# 等价于
d$height  # 获取height这一列的数据
rownames(d) = c("one", "two", "three")  # 各行也可以定义名字,指定index

Modificar valor

d$name[1] = "我爱你"  #将name的第一个值修改为我爱你   常用
d[1,2] = "女"  #将第1行第2列的值修改为“女”   常用
d[[1]][2] = "我爱你"  #将第一列第二个值改为“我爱你”

Agregar y eliminar filas y columnas

d = df1[-2,] #删除第2行数据
d = df1[,-3] #删除第3列的数据
d = df1[-c(1,3),] #删除第1行和第3行的数据
d$r = age/weight  # 添加列r

función adjuntar ()

R proporciona la función adjuntar() para transferir variables a la memoria. Al igual que nuestro d$height o d[["age"]], no necesitas escribirlo así. Solo escribe edad directamente. ¿No es genial?

d = data.frame(name=c('黎明','周杰伦','刘德华'),age=c(30,35,28),height=c(180,175,173))
attach(d)
r <- age/height  # /对r进行修改不会影响d的数据
# r的值
[1] 0.1666667 0.2000000 0.1618497
detach(d) #取消连接

unir()

Fusionar múltiples marcos de datos en un solo marco de datos

merge(data1, data2, by='ID')

Manejo de excepciones tryCatch()

Al igual que la mayoría de los lenguajes de programación, no entraré en detalles aquí. Lo que necesitas saber es que hay otra cosa llamada withCallingHandlers().

withCallingHandlers() es una variante de tryCatch(), pero las condiciones de contexto de la operación son diferentes, rara vez se usa, pero es muy útil.

Leer y guardar datos

Leer texto: read.table()

leer.tabla(“nombredearchivo.txt”)

Leer xlsx: leer.xlsx()

Primero debe instalar el paquete xlsx y luego importarlo.

datos <- read.xlsx(“nombre de archivo.xlsx”,n)

Guardar csv: escribir.csv()

write.csv(datos,archivo = "nombre de archivo")

Ejemplo xlsx: write.xlsx()

escribir.xlsx(datos, “datos.xlsx”,hoja.nombre=“hoja1”)

Guardar como imagen o archivo pdf en R

Tome png como ejemplo

png(file="myplot.png", bg="transparent")  #文件不指定地址,默认放在getwd()里了

# 这里写你的画图程序#

dev.off()  # 记得off

# 下面是一个实例
png(file="myplot.png")
plot(1:10)
rect(1, 5, 3, 7)
dev.off()

Si lo guarda como jpeg o pdf, simplemente cámbielo a png.

Algunas funciones comunes de R

Hermano Meng, prepárese. Recuerde estas cosas primero. Vamos a comenzar a hacer dibujos y analizar estadísticas.

Glosario

media, mediana, moda

No, no, no, de verdad hay gente que no sabe lo que significan estas tres palabras. . .

diferencia

La varianza (varianza de la muestra) es el promedio de las diferencias al cuadrado entre cada valor de muestra y la media de todo el valor de la muestra.

Desviación Estándar

De forma predeterminada, utilizamos la desviación estándar de la población, que es la raíz cuadrada de la varianza.

distribución normal

La curva normal tiene forma de campana, baja en ambos extremos, alta en el medio y simétrica. Debido a que la curva tiene forma de campana, la gente suele llamarla curva en forma de campana.

Si la variable aleatoria X obedece a una distribución normal con expectativa matemática μ y varianza σ^2, se registra como N(μ, σ^2). (La expectativa es Σxn*pn, xn representa la frecuencia y pn representa la probabilidad)

Su función de densidad de probabilidad es una distribución normal. El valor esperado μ determina su posición y su desviación estándar σ determina la amplitud de la distribución. La distribución normal cuando μ = 0, σ = 1 es la distribución normal estándar.
Insertar descripción de la imagen aquí

Con respecto al significado de distribución normal, puede hacer clic aquí como referencia.

media: obtener la media

a=c(1:6)
mean(a)

mediana: obtenga la mediana

a=c(1:6)
median(a)

Obtener el modo

No existe una función especial en el lenguaje R para obtener el modo, por lo que debes escribirlo a mano.

# 创建函数
getmode = function(v) {
   uniqv = unique(v)  # unique主要是返回一个把重复元素或行给删除的向量、数据框或数组
   uniqv[which.max(tabulate(match(v, uniqv)))]
}
 
# 创建向量
v = c(2,1,2,3,1,2,3,4,1,5,5,3,2,3)
 
# 调用函数
result = getmode(v)
print(result)

cuantil(): percentil, el valor predeterminado es 5

a=c(1:6)
quantile(a)
# 得到的结果
> quantile(a)
  0%  25%  50%  75% 100% 
1.00 2.25 3.50 4.75 6.00 

resumen (): estadísticas descriptivas

resumen(): Obtiene estadísticas descriptivas, que pueden proporcionar el valor mínimo, valor máximo, cuartil y valor medio de variables numéricas, así como estadísticas de frecuencia de vectores de factores y vectores logísticos, etc.

Los resultados se interpretan de la siguiente manera:

a=c(1:6)
summary(a)
# 得到的结果
> summary(a)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00    2.25    3.50    3.50    4.75    6.00 

var(): Calcular la varianza

a = c(1:5)
var(a)

sd(): desviación estándar

a = c(1:5)
sd(a)

coeficiente de variación

Varianza dividida por la media

Cuando necesita comparar el grado de dispersión de dos conjuntos de datos, si las escalas de medición de los dos conjuntos de datos son demasiado diferentes o las dimensiones de los datos son diferentes, no es apropiado utilizar directamente la desviación estándar para comparar. podemos utilizar el coeficiente de variación.

ordenar, ordenar: ordenar, especificar reglas de clasificación

x = c(1,7,5,4,4,6,9)
x = sort(x,decreasing=FALSE)  # 返回升序排列结果,当decreasing为TRUE时为降序排列
# 或者
x_order = order(x,decreasing=FALSE)  # 返回升序后的下标, decreasing为TRUE时为降序排列
x = x[x_order]

Para ordenar una matriz

x[orden(x[,1],x[,2]),]

Nota: Para orden descendente, simplemente agregue el parámetro decreciente.

Manejo de valores faltantes

Para los valores de NA, algunos cálculos se guardarán. Necesitamos ignorar NA y agregar los siguientes parámetros: na.rm=TRUE, por ejemplo

mean(height,na.rm=TRUE)
[1] 5.855

cor(): Calcula el coeficiente de correlación entre dos variables (opcional)

cor(height,log(height))

cov(): covarianza entre dos variables (opcional)

cov(height,log(height))

shapiro.test(): determina si los datos satisfacen la distribución normal

En términos generales, cuando el valor p devuelto es mayor que 0,05, se cumple.

Por supuesto, hay circunstancias especiales, jaja, porque en la mayoría de los casos de investigación científica, 0,05 no es riguroso y puede designarse como 0,01. Si la pregunta no especifica alfa, el valor predeterminado es 0,05.

Supongo que te gusta

Origin blog.csdn.net/m0_46521785/article/details/109089346
Recomendado
Clasificación