Otra alternativa de resolución solo con la paquetería estándar:
rm(list = ls() ) ## Tenemos un marco de 100 posibles participante ## que numeramos con un ID del 1 al 100 (su DNI en el estudio)## Se asigna sexo aleatoriamente con una probablidad de 0.5 para cada uno
marco <- data.frame(ID=1:100,sexo=sample(c(1,6),100,replace = T))
## se invita a participar a los 100 miembros del marco en 4 programas:
programas <- c('diat','tc','cedecor','cenaresco')
## Modelizamos una probalidades de participacion independiente en
## cada en cada programa con valores:
prob.participar <- c(.6,.8,.4,.3)
names(prob.participar) <- programas
## creamos el data.frame "estudios" para pruebas :
estudios <- data.frame()
for (i in programas) {
participa <- sample(c(TRUE,FALSE),
size= length(marco$ID),
replace =T,
prob=c(prob.participar[i],1-prob.participar[i]))
xx <- subset(marco,participa)
xx$programa <- i
estudios<- rbind(estudios,xx)
}
## combinamos:
merge(estudios[,c('ID','programa')],estudios[c('ID','programa')],
by='ID') -> pares
## tabulamos: with(pares,table(programa.x,programa.y))## Comprobamo que las diagonales corresponde al número de participantes en cada programa
with(estudios,table(programa)) Saludos On 26/10/19 19:13, Carlos Ortega wrote:
Hola, Lo puedes resolver de esta forma... He comentado el código para que puedas seguir el resultado de cada etapa. #---------------- library(randomNames) library(dplyr) library(tidyr) #---- Genero nombres aleatorios de "pacientes". ## - Estos son algunos de los que coincidirian nom_coin <- randomNames(50, ethnicity = 4) ## - A los que coincidirian les anado otros puramente aleatorios mis_datos <- data.frame(prog_A = sample(c(nom_coin, randomNames(70, ethnicity = 1)), 100, replace = FALSE), prog_B = sample(c(nom_coin, randomNames(70, ethnicity = 1)), 100, replace = FALSE), prog_C = sample(c(nom_coin, randomNames(70, ethnicity = 1)), 100, replace = FALSE), prog_D = sample(c(nom_coin, randomNames(70, ethnicity = 1)), 100, replace = FALSE)) # - Construyo las combinaciones dos a dos de las columnas res_cols <- as.data.frame(t(combn(names(mis_datos), 2))) res_comb <- as.data.frame(t(combn(1:ncol(mis_datos), 2))) res_tot <- cbind(res_cols, res_comb) # - Comparo las parejas de columnas for(i in 1:nrow(res_tot)) {val_inter <- intersect(mis_datos[, res_comb[i,1]], mis_datos[, res_comb[i,2]])res_tot[i, 5] <- length(val_inter) } res_out <- res_tot[, c(1,2,5)] names(res_out)[3] <- c('Qty') # - Construyo la tabla final res_table <- res_out %>% pivot_wider(names_from = V2, values_from = Qty ) res_table #---------------- Saludos, Carlos Ortega www.qualityexcellence.es <http://www.qualityexcellence.es>El vie., 25 oct. 2019 a las 20:17, juan manuel dias (<[email protected] <mailto:[email protected]>>) escribió:Hola, Tengo un tabla de datos con pacientes asistidos, para los cuáles tengo variables como dni, género, programa de atención etc. Hay pacientes que atendieron en más de un programa por lo cuál se repiten en la tabla. Lo que quiero es poder contar con una matriz que me permita identificar la cantidad de pacientes que coinciden entre programas. Va un ejemplo: image.png Intenté de varias formas pero no consigo hacerlo. Muchas gracias! Saludos. _______________________________________________ R-help-es mailing list [email protected] <mailto:[email protected]> https://stat.ethz.ch/mailman/listinfo/r-help-es -- Saludos, Carlos Ortega www.qualityexcellence.es <http://www.qualityexcellence.es> _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
-- +-------------------------------------------------------------- | Francisco J. Viciana Fernández | Dpto. Indicadores Demográficos | Servicio de Estadísticas Demográficas y Sociales | Instituto de Estadística y Cartografía de Andalucía | Leonardo Da Vinci, nº 21. Isla de La Cartuja. | 41071 SEVILLA. | [email protected] +--------------------------------------------------------------
<<attachment: franciscoj_viciana.vcf>>
_______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
