Hay una colección de elementos de colección de conjuntos en la función básica del lenguaje R, que contiene varios elementos de colección. Tomemos un ejemplo para presentarlo a continuación. Supongamos que hay dos matrices x e y
set.seed(123)
(x <- c(sort(sample(1:20, 9)), NA))
## [1] 2 3 5 6 10 11 14 15 19 NA
(y <- c(sort(sample(3:23, 7)), NA))
## [1] 5 7 10 11 12 16 22 NA
La función de unión es combinar dos series de números
union(x, y)
## [1] 2 3 5 6 10 11 14 15 19 NA 7 12 16 22
La función de intersección toma la intersección de dos secuencias
intersect(x, y)
## [1] 5 10 11 NA
La función setdiff es la parte de restar la intersección de la secuencia de números. Tenga en cuenta que setdiff(x, y) y setdiff(y, x) son diferentes. setdiff(x, y) es la parte de la secuencia de x menos el intersección de la secuencia de x y la secuencia de y .
setdiff(x, y)
## [1] 2 3 6 14 15 19
setdiff(y, x)
## [1] 7 12 16 22
La función setequal es juzgar si los dos conjuntos de datos x e y son exactamente iguales
setequal(x, y)
## [1] FALSE
Hoy presentaremos principalmente la función setdiff. Usando la función de resta de esta función, se puede usar en el diseño de funciones. Importemos primero nuestros datos de nacimiento prematuro y veamos los nombres de las variables.
bc<-read.csv("E:/r/test/zaochan.csv",sep=',',header=TRUE)
dput(names(bc))
## c("id", "low", "age", "lwt", "race", "smoke", "ptl", "ht", "ui",
## "ftv", "bwt")
Primero veamos la estructura de datos de bc
head(bc,6)
## id low age lwt race smoke ptl ht ui ftv bwt
## 1 85 0 19 182 black nonsmoker 0 0 1 0 2523
## 2 86 0 33 155 other nonsmoker 0 0 0 3 2551
## 3 87 0 20 105 white smoker 0 0 0 1 2557
## 4 88 0 21 108 white smoker 0 0 1 2 2594
## 5 89 0 18 107 white smoker 0 0 1 0 2600
## 6 91 0 21 124 other nonsmoker 0 0 0 0 2622
Suponiendo que las distribuciones x e y son dos vectores de cadenas
x<-c("id", "low", "age", "lwt", "race", "smoke", "ptl", "ht", "ui",
"ftv", "bwt")
y<-c("id")
x
## [1] "id" "low" "age" "lwt" "race" "smoke" "ptl" "ht" "ui"
## [10] "ftv" "bwt"
y
## [1] "id"
Supongamos que queremos eliminar la variable id de la cadena x
setdiff(x, y)
## [1] "low" "age" "lwt" "race" "smoke" "ptl" "ht" "ui" "ftv"
## [10] "bwt"
De esta manera, la variable id se elimina fácilmente, pero algunas personas pueden preguntarse cuál es el uso de esto. En nuestra programación en lenguaje R, podemos usarlo para eliminar variables y construir datos. Supongamos que quiero escribir un programa R que pueda cambiar la estructura de datos eliminando nombres de variables
datchi<-function(data,dropvar) {
name<-dput(names(data))
dropvar<-dropvar
cname<-setdiff(name, dropvar)
data<-data[,cname]
data
}
El programa es muy simple, dropvar es el nombre de la variable que queremos borrar, asumiendo que no queremos los datos de id en los datos
dat<-datchi(bc,"id")
## c("id", "low", "age", "lwt", "race", "smoke", "ptl", "ht", "ui",
## "ftv", "bwt")
head(dat,6)
## low age lwt race smoke ptl ht ui ftv bwt
## 1 0 19 182 black nonsmoker 0 0 1 0 2523
## 2 0 33 155 other nonsmoker 0 0 0 3 2551
## 3 0 20 105 white smoker 0 0 0 1 2557
## 4 0 21 108 white smoker 0 0 1 2 2594
## 5 0 18 107 white smoker 0 0 1 0 2600
## 6 0 21 124 other nonsmoker 0 0 0 0 2622
También es posible eliminar algunos más
dat<-datchi(bc,c("id", "low", "age"))
## c("id", "low", "age", "lwt", "race", "smoke", "ptl", "ht", "ui",
## "ftv", "bwt")
head(dat,6)
## lwt race smoke ptl ht ui ftv bwt
## 1 182 black nonsmoker 0 0 1 0 2523
## 2 155 other nonsmoker 0 0 0 3 2551
## 3 105 white smoker 0 0 0 1 2557
## 4 108 white smoker 0 0 1 2 2594
## 5 107 white smoker 0 0 1 0 2600
## 6 124 other nonsmoker 0 0 0 0 2622
Esta es solo una aplicación superficial. Al diseñar el programa del paquete R, podemos usar variables de grupo para sumar y luego comparar con todas las variables de los datos, de modo que podamos averiguar si hay datos anormales en todas las variables, y algunos otro Cómo usarlo, hablemos de eso cuando tengamos tiempo.