[R-es] Conservar el nombre de la variable entre varias funciones: ejemplos de resultados
Hola: Ayer me olvidé de señalar que el problema mayor que tengo es que al ejecutar la función UNI_VDQVIQ, en los resultados aparece el nombre del argumento que le paso a la función (get(XVDT) y XVARNOM ), en lugar del nombre de la variable de la tabla de datos: library(MASS) data(birthwt, package=MASS) birthwt$low - factor(birthwt$low) birthwt$race - factor(birthwt$race) DESUNI(XDADES=birthwt, XVD=low) [borrado] Cell Contents |-| | Count | | Expected Values | | Row Percent | |-| Total Observations in Table: 189 | XVARNOM get(XVDT) |0 |1 | Row Total | -|---|---|---| 0 | 130 |0 | 130 | |89,42 |40,58 | | | 100,00% | 0,00% |68,78% | -|---|---|---| 1 |0 | 59 | 59 | |40,58 |18,42 | | | 0,00% | 100,00% |31,22% | -|---|---|---| Column Total | 130 | 59 | 189 | -|---|---|---| Es lo que pregunté inicialmente a la lista con el ejemplo reproducible: A - function (XVD, XVI, XDATOS) { attach(XDATOS) B(XVD, XVI) detach(XDATOS) } B - function (XVD, XVI) { TBL = xtabs(~get(XVD) + get(XVI)) print(TBL) print(summary(TBL)) } DATOS - data.frame(SE=c(M, H, M, M, H), EDAD=c(50, 60, 20, 18, 30), GRP=c(B, B, A, A, B)) A(GRP, SE, DATOS) La tabla que imprime és: get(XVI) get(XVD) H M A 0 2 B 2 1 Gracias y saludos! Beginning of forwarded message 14.07.2015, 22:49, Griera gri...@yandex.com: Hola Carlos: Te adjunto un ejemplo de aplicación: las funciones (he borrado los path de las funciones y las ordenes source() que las carga ) y un ejemplo para ejecutarlas para las opciones que tengo implementadas con la tabla de datos birthwt del paqueteMASS: - Descriptiva de todas las variables de una tabla. - Análisis univariado de todas las variables de una tabla cruzadas con una variable dependiente cualitativa. =Inicio funciones ##-- ## DESUNI ##-- DESUNI = function(XDADES, XDROP=NULL, XVD=NULL, XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el valor TRUE ) { options(digits = 3, OutDec=,, scipen=999) ## No existeix VD: descriptiva if(is.null(XVD)) # No existeix VD: descriptiva { cat(\n*** Descriptiva (no existeix variable dependent)\n) DES(XDADES=XDADES, XDROP=XDROP, XCAMIF=XCAMIF) } ## Existeis VD: anàlisi univariat else # Existeis VD: anàlisi univariat { UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV, XCAMIF=XCAMIF) } } ##-- ## DES: Descriptiva de todas las variables ##-- DES = function(XDADES, XDROP=NULL, XCAMIF) { ifelse(is.null(XDROP), DADES_S - XDADES, DADES_S - XDADES[, setdiff(names(XDADES), XDROP) ]) # setdiff Selecciona les variables de XDADES que són diferents de XDROP attach(DADES_S, warn.conflicts = F) XVARLLI=names(DADES_S) for (XVARNOM in names(DADES_S)) { if(is.numeric(get(XVARNOM))) { DES_QUANTI (XVARNOM) } else if(is.factor(get(XVARNOM))) { DES_QUALI (XVARNOM) } else { cat(La variable , XVARNOM, no és de cap dels tipus coneguts, \n) } } # Fi de la funció detach(DADES_S) } ##-- ## DES_QUANTI: Descriptiva variables factor ##-- DES_QUANTI - function(X) { OP - par(no.readonly = TRUE); # save old parameters par(mfrow=c(1,3)) hist(get(X), main=c(Histograma de, X), xlab=X);rug(get(X)) boxplot(get(X), main=c(Diagrama de caixa de, X), ylab=X);rug(get(X),side=2) qqnorm(get(X), main=c(Diagrama Q-Q de, X));qqline(get(X)) cat(\n) par(OP) ESTA_1-data.frame(Variable = X, N_total = length(get(X)), N_valids = sum(!is.na(get(X))), N_desconeguts = sum(is.na(get(X))) ) ESTA_2-data.frame(Variable = X, N = sum(!is.na(get(X))), Mitjana = if (mean(get(X) 10)) {round(mean(get(X), na.rm = TRUE), 2)} else {round(mean(get(X), na.rm = TRUE), 3)},
Re: [R-es] Conservar el nombre de la variable entre varias funciones: ejemplos de resultados
Hola Carlos:[Entre líneas] 15.07.2015, 00:18, "Carlos Ortega" c...@qualityexcellence.es:Hola,Gracias por el código. Lo he ejecutado y he visto los resultados.Salvo la parte de los test como te dije, todo lo demás creo que se puede hacer más automático.Probaré a hacer alguna prueba de lo que te comento utilizando el conjunto de MASS.Sobre la duda de los nombres, si le pasas el data.frame tal cual, te debiera de conservar los nombres.Si no es así, pásale como argumento adicional a las funciones los nombres de las columnas/variables... Había escrito un nuevo mail aclaratorio sin haber leído este. Olvida el último mail y pruebo estas dos cosas que dices. Muchas gracias y saludos Saludos,Carlos. El 14 de julio de 2015, 22:49, Griera gri...@yandex.com escribió:Hola Carlos: Te adjunto un ejemplo de aplicación: las funciones (he borrado los path de las funciones y las ordenes "source()" que las carga ) y un ejemplo para ejecutarlas para las opciones que tengo implementadas con la tabla de datos birthwt del paquete"MASS": - Descriptiva de todas las variables de una tabla. - Análisis univariado de todas las variables de una tabla cruzadas con una variable dependiente cualitativa. =Inicio funciones ##-- ## DESUNI ##-- DESUNI = function(XDADES, XDROP=NULL, XVD=NULL, XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el valor TRUE ) { options(digits = 3, OutDec=",", scipen=999) ## No existeix VD: descriptiva if(is.null(XVD)) # No existeix VD: descriptiva { cat("\n*** Descriptiva (no existeix variable dependent)\n") DES(XDADES=XDADES, XDROP=XDROP, XCAMIF=XCAMIF) } ## Existeis VD: anàlisi univariat else # Existeis VD: anàlisi univariat { UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV, XCAMIF=XCAMIF) } } ##-- ## DES: Descriptiva de todas las variables ##-- DES = function(XDADES, XDROP=NULL, XCAMIF) { ifelse(is.null(XDROP), DADES_S - XDADES, DADES_S - XDADES[, setdiff(names(XDADES), XDROP) ]) # setdiff Selecciona les variables de XDADES que són diferents de XDROP attach(DADES_S, warn.conflicts = F) XVARLLI=names(DADES_S) for (XVARNOM in names(DADES_S)) { if(is.numeric(get(XVARNOM))) { DES_QUANTI (XVARNOM) } else if(is.factor(get(XVARNOM))) { DES_QUALI (XVARNOM) } else { cat("La variable ", XVARNOM, "no és de cap dels tipus coneguts", "\n") } } # Fi de la funció detach(DADES_S) } ##-- ## DES_QUANTI: Descriptiva variables factor ##-- DES_QUANTI - function(X) { OP - par(no.readonly = TRUE); # save old parameters par(mfrow=c(1,3)) hist(get(X), main=c("Histograma de", X), xlab=X);rug(get(X)) boxplot(get(X), main=c("Diagrama de caixa de", X), ylab=X);rug(get(X),side=2) qqnorm(get(X), main=c("Diagrama Q-Q de", X));qqline(get(X)) cat("\n") par(OP) ESTA_1-data.frame(Variable = X, N_total = length(get(X)), N_valids = sum(!is.na(get(X))), N_desconeguts = sum(is.na(get(X))) ) ESTA_2-data.frame(Variable = X, N = sum(!is.na(get(X))), Mitjana = if (mean(get(X) 10)) {round(mean(get(X), na.rm = TRUE), 2)} else {round(mean(get(X), na.rm = TRUE), 3)}, Err_tipic = if (sd (get(X) 10)) {round(sd (get(X), na.rm = TRUE), 2)} else {round(sd (get(X), na.rm = TRUE), 3)}, Min = min(get(X), na.rm = TRUE), Perc_25 = quantile(get(X),.25), Mediana = median(get(X), na.rm = TRUE), Perc_75 = quantile(get(X),.75), Max = max(get(X), na.rm = TRUE), Interval = max(get(X), na.rm = TRUE) - min(get(X), na.rm = TRUE) ) cat("", "\n") cat("Valors valids i desconeguts", "\n") print(ESTA_1, row.names = FALSE) cat("", "\n") cat("Estadistics", "\n") print(ESTA_2, row.names = FALSE) cat("", "\n") return(summary(get(X))) } ##-- ## DES_QUALI: Descriptiva variables factor ##-- DES_QUALI - function(X) { cat("Var factor: ",X,"\n")
Re: [R-es] Conservar el nombre de la variable entre varias funciones: ejemplos de resultados: solucionado
Hola: On Wed, 15 Jul 2015 00:18:32 +0200 Carlos Ortega c...@qualityexcellence.es wrote: [borro] Sobre la duda de los nombres, si le pasas el data.frame tal cual, te debiera de conservar los nombres. Tienes razón. Ahora le paso el nombre del data.frame, y ya muestra el nombre de la variable analizada. Muchas gracias por la sugerencia. Saludos! Si no es así, pásale como argumento adicional a las funciones los nombres de las columnas/variables... Saludos, Carlos. El 14 de julio de 2015, 22:49, Griera gri...@yandex.com escribió: Hola Carlos: Te adjunto un ejemplo de aplicación: las funciones (he borrado los path de las funciones y las ordenes source() que las carga ) y un ejemplo para ejecutarlas para las opciones que tengo implementadas con la tabla de datos birthwt del paqueteMASS: - Descriptiva de todas las variables de una tabla. - Análisis univariado de todas las variables de una tabla cruzadas con una variable dependiente cualitativa. =Inicio funciones ##-- ## DESUNI ##-- DESUNI = function(XDADES, XDROP=NULL, XVD=NULL, XSPV=NULL # Si és una anàlisi de SPV # Pot tenir el valor TRUE ) { options(digits = 3, OutDec=,, scipen=999) ## No existeix VD: descriptiva if(is.null(XVD)) # No existeix VD: descriptiva { cat(\n*** Descriptiva (no existeix variable dependent)\n) DES(XDADES=XDADES, XDROP=XDROP, XCAMIF=XCAMIF) } ## Existeis VD: anàlisi univariat else # Existeis VD: anàlisi univariat { UNI(XDADES=XDADES, XDROP=XDROP, XVD=XVD, XSPV=XSPV, XCAMIF=XCAMIF) } } ##-- ## DES: Descriptiva de todas las variables ##-- DES = function(XDADES, XDROP=NULL, XCAMIF) { ifelse(is.null(XDROP), DADES_S - XDADES, DADES_S - XDADES[, setdiff(names(XDADES), XDROP) ]) # setdiff Selecciona les variables de XDADES que són diferents de XDROP attach(DADES_S, warn.conflicts = F) XVARLLI=names(DADES_S) for (XVARNOM in names(DADES_S)) { if(is.numeric(get(XVARNOM))) { DES_QUANTI (XVARNOM) } else if(is.factor(get(XVARNOM))) { DES_QUALI (XVARNOM) } else { cat(La variable , XVARNOM, no és de cap dels tipus coneguts, \n) } } # Fi de la funció detach(DADES_S) } ##-- ## DES_QUANTI: Descriptiva variables factor ##-- DES_QUANTI - function(X) { OP - par(no.readonly = TRUE); # save old parameters par(mfrow=c(1,3)) hist(get(X),main=c(Histograma de, X), xlab=X);rug(get(X)) boxplot(get(X), main=c(Diagrama de caixa de, X), ylab=X);rug(get(X),side=2) qqnorm(get(X), main=c(Diagrama Q-Q de, X));qqline(get(X)) cat(\n) par(OP) ESTA_1-data.frame(Variable = X, N_total = length(get(X)), N_valids = sum(!is.na(get(X))), N_desconeguts = sum(is.na(get(X))) ) ESTA_2-data.frame(Variable = X, N = sum(!is.na(get(X))), Mitjana = if (mean(get(X) 10)) {round(mean(get(X), na.rm = TRUE), 2)} else {round(mean(get(X), na.rm = TRUE), 3)}, Err_tipic = if (sd (get(X) 10)) {round(sd (get(X), na.rm = TRUE), 2)} else {round(sd (get(X), na.rm = TRUE), 3)}, Min = min(get(X), na.rm = TRUE), Perc_25 = quantile(get(X),.25), Mediana = median(get(X), na.rm = TRUE), Perc_75 = quantile(get(X),.75), Max = max(get(X), na.rm = TRUE), Interval = max(get(X), na.rm = TRUE) - min(get(X), na.rm = TRUE) ) cat(, \n) cat(Valors valids i desconeguts, \n) print(ESTA_1, row.names = FALSE) cat(, \n) cat(Estadistics, \n) print(ESTA_2, row.names = FALSE) cat(, \n) return(summary(get(X))) } ##-- ## DES_QUALI: Descriptiva variables factor ##-- DES_QUALI - function(X) { cat(Var factor: ,X,\n) XOUT -
[R-es] Operaciones entre conjuntos
Hola a todos...Estoy tratando de hacer un trabajo de comparacion de conjuntos y no entiendo que pasa con los resultados.Me explico. Tengo una columna donde se tiene el nombre de una persona, est� ordenado APELLIDOS - NOMBRESa continuaci�n tengo el el nombre de la misma persona, pero ordenado NOMBRES - APELLIDOS.El proceso debe identificar que las 2 columnas son iguales. Estoy usando operaciones entre conjuntos y estructuras data.tableNo entiendo, porque haciendo en data.table la comparacion me sale FALSA, es decir no son iguales, pero si hago la comparaci�n aparte, sale VERDADEROAdjunto el c�digo... gracias por su apoyo... require(data.table)a - data.table( x = 1:2, y = list(c(ANDRES,GERARDO,CABRERA,GUAMAN), c(MONTALVAN,VERA,JORGE,LEONARDO)), z = list(c(CABRERA,GUAMAN,GERARDO,ANDRES), c(JORGE,MONTALVAN,VERA))) a[,:=(vld=setequal(y,z)),by=x] setequal(c(ANDRES,GERARDO,CABRERA,GUAMAN),c(CABRERA,GUAMAN,GERARDO,ANDRES)) [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es