Creo que el problema se podría simplificar y aún obtener un resultado aceptable si simplemente haces un ajuste lineal en un entorno del punto. Como ya tienes los valores de los puntos de cada curva como dices Carlos, creo que con esa información podrías identificar un entorno adecuado en el cual ajustar linealmente. Cuéntanos como te va, Saludos !! Eric. On 24-08-20 12:52, Carlos Ortega wrote:> Hola Manuel, > > Resolver el punto de corte de forma analítica implicaría el tener > ajustada cada densidad también de forma analítica. > Una alternativa que se me ocurre es la siguiente: > > * Con la función "density()" ajustar la densidad de las presencias y > las ausencias. > o Con esta función (del paquete base) obtienes los valores x e > y. Seguro que dentro del objeto de ggplot también está, pero > con "density()" acceder a esos valores es mucho más sencillo. > * Esos valores x, y de cada densidad, los puedes ajustar con una > función polinómica, o vaya si conoces el tipo de función analítica > a la que se debieran de ajustar, puedes ajustar los valores a esos > datos (función "nls()" ). > o Y teniendo ya las funciones analíticas el problema se reduce a > solucionar el sistema de ecuaciones para encontrar los puntos > de corte (función "solve()"). > > Vaya, es un tanto elaborado, pero con un par de funciones sencillas, > se puede automatizar todo esto. :-). > > Gracias, > Carlos Ortega > www.qualityexcellence.es <http://www.qualityexcellence.es> > > El lun., 24 ago. 2020 a las 14:17, Manuel Mendoza > (<mmendoza en fulbrightmail.org <mailto:mmendoza en fulbrightmail.org>>) > escribió: > > Buenas tardes, tengo una variable bimodal (/var)/, de presencias y > ausencias (1s y 0s) y otra variable, /prob/, con las > probabilidades que le asigna un modelo (entre 0 y 1). > Con: *ggplot(Preds, aes(x=prob, fill= var )) + geom_density(alpha=.3)* > obtengo la distribución de las presencias y de las ausencias, por > separado, en función del valor de probabilidad asignado. Las dos > curvas se cruzan en un punto. ¿Sabéis si hay forma de averiguar el > valor de /prob/ de ese punto analíticamente? > Gracias, > Manuel > image.png > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org <mailto:R-help-es en r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es > <https://stat.ethz.ch/mailman/listinfo/r-help-es> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es <http://www.qualityexcellence.es> > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20200824/c6bd9cf0/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 12490 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20200824/c6bd9cf0/attachment-0001.png>
Hola a tod en s ?C?mo puedo cambiar varios datos por otros en un data frame? Por ejemplo col1<-c("uno","dos",3,4,"cinco",6,"siete",8,9,"diez") col2<-c(1,2,3,4,5,6,7,8,9,10) df<-data.frame(col1,col2) df$col1<-as.character(df$col1) df col1 col2 uno 1 dos 2 3 3 4 4 cinco 5 6 6 siete 7 8 8 9 9 diez 10 Ahora quiero cambiar por ejemplo los n?meros por letras (o cualquier otro dato en cualquier otro ejemplo) df$col1[df$col1==3]<-"tres" df$col1[df$col1==4]<-"cuatro" df$col1[df$col1==6]<-"seis" df$col1[df$col1==8]<-"ocho" df$col1[df$col1==9]<-"nueve" ?No hay otra forma de ponerlo para no ir uno a uno? he probado con df$col1[df$col1==c(3,4,6)]<-c("tres","cuatro","seis") pero nada, pq creo que tendr?a q ponerlos todos, solo quiero poner los que quiero cambiar. Gracias! [[alternative HTML version deleted]]
Hola: Si codificas "col1" como un factor, lo puedes cambiar todo de una vez renombrando los niveles correspondientes: > df$col1<-as.factor(df$col1) > df$col1 [1] uno dos 3 4 cinco 6 siete 8 9 diez Levels: 3 4 6 8 9 cinco diez dos siete uno > levels(df$col1)[1:5] <- c("tres","cuatro","seis","ocho","nueve") > df col1 col2 1 uno 1 2 dos 2 3 tres 3 4 cuatro 4 5 cinco 5 6 seis 6 7 siete 7 8 ocho 8 9 nueve 9 10 diez 10 > Saludos, Marcelino El 13/09/2020 a las 14:37, Samura . escribió:> Hola a tod en s > > ?C?mo puedo cambiar varios datos por otros en un data frame? > > Por ejemplo > > col1<-c("uno","dos",3,4,"cinco",6,"siete",8,9,"diez") > col2<-c(1,2,3,4,5,6,7,8,9,10) > > df<-data.frame(col1,col2) > df$col1<-as.character(df$col1) > df > > col1 col2 > uno 1 > dos 2 > 3 3 > 4 4 > cinco 5 > 6 6 > siete 7 > 8 8 > 9 9 > diez 10 > > Ahora quiero cambiar por ejemplo los n?meros por letras (o cualquier otro dato en cualquier otro ejemplo) > > df$col1[df$col1==3]<-"tres" > df$col1[df$col1==4]<-"cuatro" > df$col1[df$col1==6]<-"seis" > df$col1[df$col1==8]<-"ocho" > df$col1[df$col1==9]<-"nueve" > > ?No hay otra forma de ponerlo para no ir uno a uno? > > he probado con > > df$col1[df$col1==c(3,4,6)]<-c("tres","cuatro","seis") > > pero nada, pq creo que tendr?a q ponerlos todos, solo quiero poner los que quiero cambiar. > > Gracias! > > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es-- Marcelino de la Cruz Rot Depto. de Biología y Geología Física y Química Inorgánica Universidad Rey Juan Carlos Móstoles España
Mira la ayuda de %in% Quizás es lo que buscas. ?JIV El El dom, 13 de sep. de 2020 a la(s) 7:38 a. m., Samura . < tontito82 en hotmail.com> escribió:> Hola a tod en s > > > > ¿Cómo puedo cambiar varios datos por otros en un data frame? > > > > Por ejemplo > > > > col1<-c("uno","dos",3,4,"cinco",6,"siete",8,9,"diez") > > col2<-c(1,2,3,4,5,6,7,8,9,10) > > > > df<-data.frame(col1,col2) > > df$col1<-as.character(df$col1) > > df > > > > col1 col2 > > uno 1 > > dos 2 > > 3 3 > > 4 4 > > cinco 5 > > 6 6 > > siete 7 > > 8 8 > > 9 9 > > diez 10 > > > > Ahora quiero cambiar por ejemplo los números por letras (o cualquier otro > dato en cualquier otro ejemplo) > > > > df$col1[df$col1==3]<-"tres" > > df$col1[df$col1==4]<-"cuatro" > > df$col1[df$col1==6]<-"seis" > > df$col1[df$col1==8]<-"ocho" > > df$col1[df$col1==9]<-"nueve" > > > > ¿No hay otra forma de ponerlo para no ir uno a uno? > > > > he probado con > > > > df$col1[df$col1==c(3,4,6)]<-c("tres","cuatro","seis") > > > > pero nada, pq creo que tendría q ponerlos todos, solo quiero poner los que > quiero cambiar. > > > > Gracias! > > > > > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > --Sent from my phone. Please excuse my brevity and misspelling. [[alternative HTML version deleted]]