Hola
Soy Leticia, querÃa hacer una consulta al grupo a ver si me podéis ayudar.
Tengo unos datos de proteÃnas, el data frame es: 5 columnas iniciales que
tienen información sobre las proteÃnas y después las columnas con las
intensidades, de las cuales no se cuantas condiciones tienen ni cuántas
réplicas por condición.
Estoy intentando hacer un cálculo del coeficiente de variación por grupo y
representarlo en con boxplots.
Para poder hacer este plot, la mejor opción que he encontrado es crear una
lista por grupo y calcular el coeficiente de variación por lista, ejemplo:
tres condiciones == tres listas == 3 CV == 3 box in the plot.
Mi problema y donde necesito ayuda es que no consigo hacer un
código general para poder hacer las listas de forma automática, y esta
parte es el cuello de botella que siempre necesita que sea hardcoded (en
negrita) abajo.
He puesto los pasos que tengo,
1) pedir numero de replicas y condiciones
2) renombrar las intensidades en base a lo anterior
3) hacer las listas ************ (AYUDA)
El codigo que tengo hasta ahora es:
######### 1
## Esta parte para introducir el numero de replicas y condiciones, que
varia segun el experimento
x = readline("Enter number of replicates: ")
print(paste("Number of replicates:", x ))
y = readline("How many conditions? ")
print(paste("You have ", y , "conditions")
###########################
Esta parte para renombrar las intensidades usando x e y
###### 2
for (i in 1:y){
varnames[i] <- c(rep(paste0("gp_", i), y))
}
varnames
Group <- factor(varnames)
nu.Norm <- select_if(Norm, is.numeric)
#this part will change the columns names, do we want that?
names(nu.Norm) <- paste0(rep(varnames, each=x), "_", 1:x)
nu.Norm
##############################
Crear listas para el boxplot
###### 3
*listgp <- list(Norm[,6:(as.numeric(x)+5)],
Norm[,(as.numeric(x)+5):(as.numeric(x)*2+5)],
Norm[,(as.numeric(x)*2+5):(as.numeric(x)*3+5)])*
OR
f
*or (c in colnames(nu.Norm)){ dat1 <- nu.Norm %>% select(
contains("gp_1_")) dat2 <- nu.Norm %>% select( contains("gp_2_")) dat3 <-
nu.Norm %>% select( contains("gp_3_"))}list.gp <http://list.gp> <-
list(dat1, dat2, dat3)*
cv.df <- lapply(list.gp, function(x){(apply(x,1,sd)/rowMeans(x))*100})
cvdf <-as.data.frame(do.call("cbind", cv.df))
colnames(cvdf)<-c(varnames)
###### crear la figura
palette<-rep(c(randomColor(y, luminosity="random")), times=c(1,1,1))
cvdf_melt<-reshape2::melt(cvdf)
g5 <-ggplot( cvdf_melt, aes(x=variable,
y=value))+geom_boxplot(color="black",fill=palette, alpha=0.8)+##,
fill="Experiment"
scale_y_continuous(limits=c(0,100), breaks=seq(0,100, by=10))+
theme_bw()+
theme(panel.grid.major = element_line(colour = "gray85"),
panel.grid.minor = element_line(colour = "gray85"),
axis.text.x = element_text(color = "black", size = 12,angle=45,
hjust=1,vjust=1),
axis.text.y= element_text(color = "black", size = 12,angle=0,
hjust=0.5,vjust=0.5),
axis.title.x=element_text(color = "black", size = 15,angle=0,
hjust=0.5,vjust=0.5),
axis.title.y=element_text(color = "black", size = 15,angle=90,
hjust=0.5,vjust=0.5),
axis.ticks.length = unit(5, "pt"),
axis.ticks = element_line(size = 1),
legend.position="none",
title =element_text(size=12))+
labs(x="", y = "CV(%)", title="Coefficient of variation")
g5
GRACIAS!
[R-es] Ayuda para hacer una lista
7 messages · Leticia G Leon, Javier Marcuzzi, eric +2 more
Hola Leticia Acomodar datos para analizar suele llevar más trabajo que el análisis. Yo prefiero en un data.frame colocar todos los datos, porque siempre es más fácil filtrar que agregar. Cuándo tengo el data.frame con todo, realizo un plot (datos), y muchas veces en la gráfica veo cosas que me llaman la atención, de esta forma busco algo de antemano no sospechaba. No es necesario que conozcas el número de réplica, pueden armar de tal forma que cada réplica es una fila que agregas al data.frame. Pero son formas de trabajar, seguramente hay personas más inteligentes que yo. Javier Rubén Marcuzzi
El 26 jun 2024, a las 11:50?a. m., Leticia G Leon <gl.leticia en gmail.com> escribió:
Hola
Soy Leticia, querÃa hacer una consulta al grupo a ver si me podéis ayudar.
Tengo unos datos de proteÃnas, el data frame es: 5 columnas iniciales que
tienen información sobre las proteÃnas y después las columnas con las
intensidades, de las cuales no se cuantas condiciones tienen ni cuántas
réplicas por condición.
Estoy intentando hacer un cálculo del coeficiente de variación por grupo y
representarlo en con boxplots.
Para poder hacer este plot, la mejor opción que he encontrado es crear una
lista por grupo y calcular el coeficiente de variación por lista, ejemplo:
tres condiciones == tres listas == 3 CV == 3 box in the plot.
Mi problema y donde necesito ayuda es que no consigo hacer un
código general para poder hacer las listas de forma automática, y esta
parte es el cuello de botella que siempre necesita que sea hardcoded (en
negrita) abajo.
He puesto los pasos que tengo,
1) pedir numero de replicas y condiciones
2) renombrar las intensidades en base a lo anterior
3) hacer las listas ************ (AYUDA)
El codigo que tengo hasta ahora es:
######### 1
## Esta parte para introducir el numero de replicas y condiciones, que
varia segun el experimento
x = readline("Enter number of replicates: ")
print(paste("Number of replicates:", x ))
y = readline("How many conditions? ")
print(paste("You have ", y , "conditions")
###########################
Esta parte para renombrar las intensidades usando x e y
###### 2
for (i in 1:y){
varnames[i] <- c(rep(paste0("gp_", i), y))
}
varnames
Group <- factor(varnames)
nu.Norm <- select_if(Norm, is.numeric)
#this part will change the columns names, do we want that?
names(nu.Norm) <- paste0(rep(varnames, each=x), "_", 1:x)
nu.Norm
##############################
Crear listas para el boxplot
###### 3
*listgp <- list(Norm[,6:(as.numeric(x)+5)],
Norm[,(as.numeric(x)+5):(as.numeric(x)*2+5)],
Norm[,(as.numeric(x)*2+5):(as.numeric(x)*3+5)])*
OR
f
*or (c in colnames(nu.Norm)){ dat1 <- nu.Norm %>% select(
contains("gp_1_")) dat2 <- nu.Norm %>% select( contains("gp_2_")) dat3 <-
nu.Norm %>% select( contains("gp_3_"))}list.gp <http://list.gp> <-
list(dat1, dat2, dat3)*
cv.df <- lapply(list.gp, function(x){(apply(x,1,sd)/rowMeans(x))*100})
cvdf <-as.data.frame(do.call("cbind", cv.df))
colnames(cvdf)<-c(varnames)
###### crear la figura
palette<-rep(c(randomColor(y, luminosity="random")), times=c(1,1,1))
cvdf_melt<-reshape2::melt(cvdf)
g5 <-ggplot( cvdf_melt, aes(x=variable,
y=value))+geom_boxplot(color="black",fill=palette, alpha=0.8)+##,
fill="Experiment"
scale_y_continuous(limits=c(0,100), breaks=seq(0,100, by=10))+
theme_bw()+
theme(panel.grid.major = element_line(colour = "gray85"),
panel.grid.minor = element_line(colour = "gray85"),
axis.text.x = element_text(color = "black", size = 12,angle=45,
hjust=1,vjust=1),
axis.text.y= element_text(color = "black", size = 12,angle=0,
hjust=0.5,vjust=0.5),
axis.title.x=element_text(color = "black", size = 15,angle=0,
hjust=0.5,vjust=0.5),
axis.title.y=element_text(color = "black", size = 15,angle=90,
hjust=0.5,vjust=0.5),
axis.ticks.length = unit(5, "pt"),
axis.ticks = element_line(size = 1),
legend.position="none",
title =element_text(size=12))+
labs(x="", y = "CV(%)", title="Coefficient of variation")
g5
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
Muchas fracias por la rapida contastacion Javier. Si, ya me he dado cuenta que a veces es mas limpiar y formatear que calcular. Lo que yo necesito hacer no es crear un data.frame, es crear una lista por cada grupo/condicion de muestras. Y queria hacerlo en un for loop, para que no tuviese que indicar cuantas listas necesito si no que cogiese esa informacion del usuario (y) Creo que no me explique muy bien, lo siento. Gracias Lety El mié, 26 jun 2024 a las 17:40, Javier Marcuzzi (< javier.ruben.marcuzzi en gmail.com>) escribió:
Hola Leticia Acomodar datos para analizar suele llevar más trabajo que el análisis. Yo prefiero en un data.frame colocar todos los datos, porque siempre es más fácil filtrar que agregar. Cuándo tengo el data.frame con todo, realizo un plot (datos), y muchas veces en la gráfica veo cosas que me llaman la atención, de esta forma busco algo de antemano no sospechaba. No es necesario que conozcas el número de réplica, pueden armar de tal forma que cada réplica es una fila que agregas al data.frame. Pero son formas de trabajar, seguramente hay personas más inteligentes que yo. Javier Rubén Marcuzzi
El 26 jun 2024, a las 11:50?a. m., Leticia G Leon <gl.leticia en gmail.com>
escribió:
Hola Soy Leticia, querÃa hacer una consulta al grupo a ver si me podéis
ayudar.
Tengo unos datos de proteÃnas, el data frame es: 5 columnas iniciales que tienen información sobre las proteÃnas y después las columnas con las intensidades, de las cuales no se cuantas condiciones tienen ni cuántas réplicas por condición. Estoy intentando hacer un cálculo del coeficiente de variación por grupo
y
representarlo en con boxplots. Para poder hacer este plot, la mejor opción que he encontrado es crear
una
lista por grupo y calcular el coeficiente de variación por lista,
ejemplo:
tres condiciones == tres listas == 3 CV == 3 box in the plot.
Mi problema y donde necesito ayuda es que no consigo hacer un
código general para poder hacer las listas de forma automática, y esta
parte es el cuello de botella que siempre necesita que sea hardcoded (en
negrita) abajo.
He puesto los pasos que tengo,
1) pedir numero de replicas y condiciones
2) renombrar las intensidades en base a lo anterior
3) hacer las listas ************ (AYUDA)
El codigo que tengo hasta ahora es:
######### 1
## Esta parte para introducir el numero de replicas y condiciones, que
varia segun el experimento
x = readline("Enter number of replicates: ")
print(paste("Number of replicates:", x ))
y = readline("How many conditions? ")
print(paste("You have ", y , "conditions")
###########################
Esta parte para renombrar las intensidades usando x e y
###### 2
for (i in 1:y){
varnames[i] <- c(rep(paste0("gp_", i), y))
}
varnames
Group <- factor(varnames)
nu.Norm <- select_if(Norm, is.numeric)
#this part will change the columns names, do we want that?
names(nu.Norm) <- paste0(rep(varnames, each=x), "_", 1:x)
nu.Norm
##############################
Crear listas para el boxplot
###### 3
*listgp <- list(Norm[,6:(as.numeric(x)+5)],
Norm[,(as.numeric(x)+5):(as.numeric(x)*2+5)],
Norm[,(as.numeric(x)*2+5):(as.numeric(x)*3+5)])*
OR
f
*or (c in colnames(nu.Norm)){ dat1 <- nu.Norm %>% select(
contains("gp_1_")) dat2 <- nu.Norm %>% select( contains("gp_2_")) dat3
<-
nu.Norm %>% select( contains("gp_3_"))}list.gp <http://list.gp> <-
list(dat1, dat2, dat3)*
cv.df <- lapply(list.gp, function(x){(apply(x,1,sd)/rowMeans(x))*100})
cvdf <-as.data.frame(do.call("cbind", cv.df))
colnames(cvdf)<-c(varnames)
###### crear la figura
palette<-rep(c(randomColor(y, luminosity="random")), times=c(1,1,1))
cvdf_melt<-reshape2::melt(cvdf)
g5 <-ggplot( cvdf_melt, aes(x=variable,
y=value))+geom_boxplot(color="black",fill=palette, alpha=0.8)+##,
fill="Experiment"
scale_y_continuous(limits=c(0,100), breaks=seq(0,100, by=10))+
theme_bw()+
theme(panel.grid.major = element_line(colour = "gray85"),
panel.grid.minor = element_line(colour = "gray85"),
axis.text.x = element_text(color = "black", size = 12,angle=45,
hjust=1,vjust=1),
axis.text.y= element_text(color = "black", size = 12,angle=0,
hjust=0.5,vjust=0.5),
axis.title.x=element_text(color = "black", size = 15,angle=0,
hjust=0.5,vjust=0.5),
axis.title.y=element_text(color = "black", size = 15,angle=90,
hjust=0.5,vjust=0.5),
axis.ticks.length = unit(5, "pt"),
axis.ticks = element_line(size = 1),
legend.position="none",
title =element_text(size=12))+
labs(x="", y = "CV(%)", title="Coefficient of variation")
g5
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
Estimada Leticia Lista, data.frame, etc. Son formas de tener la información, lo que pasa es que alguna tiene más herramientas que otras para poder trabajar. Si usted lo desea realizar con una lista y un bucle, se puede, pero todo ese trabajo por ahà es mas simple desde un data.frame, o alguna de las formas que hay disponibles para almacenar datos. Posiblemente usted esté pensando mal, el pensamiento correcto podrÃa ser crear una función de búsqueda y dentro de esa función estarÃa el bucle. Pero son solo ideas, todos los caminos llevan a Roma. Posiblemente usted logre realizarlo de otra forma, a veces es mucho gusto personal, por ahà se pueden hacer test de que forma es más rápida en términos informáticos, pero esa es otra cuestión. Lo que sÃ, es recomendable que si usted realice el bucle, lo pase a vector o compile (victoriar), observe sobre el rendimiento en R, podrÃa ser que su trabajo funcione con pocos datos pero si lo aumenta puede entrar en problemas. Javier Rubén Marcuzzi
El 27 jun 2024, a las 12:15?p. m., Leticia G Leon <gl.leticia en gmail.com> escribió: Muchas fracias por la rapida contastacion Javier. Si, ya me he dado cuenta que a veces es mas limpiar y formatear que calcular. Lo que yo necesito hacer no es crear un data.frame, es crear una lista por cada grupo/condicion de muestras. Y queria hacerlo en un for loop, para que no tuviese que indicar cuantas listas necesito si no que cogiese esa informacion del usuario (y) Creo que no me explique muy bien, lo siento. Gracias Lety El mié, 26 jun 2024 a las 17:40, Javier Marcuzzi (<javier.ruben.marcuzzi en gmail.com <mailto:javier.ruben.marcuzzi en gmail.com>>) escribió:
Hola Leticia Acomodar datos para analizar suele llevar más trabajo que el análisis. Yo prefiero en un data.frame colocar todos los datos, porque siempre es más fácil filtrar que agregar. Cuándo tengo el data.frame con todo, realizo un plot (datos), y muchas veces en la gráfica veo cosas que me llaman la atención, de esta forma busco algo de antemano no sospechaba. No es necesario que conozcas el número de réplica, pueden armar de tal forma que cada réplica es una fila que agregas al data.frame. Pero son formas de trabajar, seguramente hay personas más inteligentes que yo. Javier Rubén Marcuzzi
El 26 jun 2024, a las 11:50?a. m., Leticia G Leon <gl.leticia en gmail.com <mailto:gl.leticia en gmail.com>> escribió:
Hola
Soy Leticia, querÃa hacer una consulta al grupo a ver si me podéis ayudar.
Tengo unos datos de proteÃnas, el data frame es: 5 columnas iniciales que
tienen información sobre las proteÃnas y después las columnas con las
intensidades, de las cuales no se cuantas condiciones tienen ni cuántas
réplicas por condición.
Estoy intentando hacer un cálculo del coeficiente de variación por grupo y
representarlo en con boxplots.
Para poder hacer este plot, la mejor opción que he encontrado es crear una
lista por grupo y calcular el coeficiente de variación por lista, ejemplo:
tres condiciones == tres listas == 3 CV == 3 box in the plot.
Mi problema y donde necesito ayuda es que no consigo hacer un
código general para poder hacer las listas de forma automática, y esta
parte es el cuello de botella que siempre necesita que sea hardcoded (en
negrita) abajo.
He puesto los pasos que tengo,
1) pedir numero de replicas y condiciones
2) renombrar las intensidades en base a lo anterior
3) hacer las listas ************ (AYUDA)
El codigo que tengo hasta ahora es:
######### 1
## Esta parte para introducir el numero de replicas y condiciones, que
varia segun el experimento
x = readline("Enter number of replicates: ")
print(paste("Number of replicates:", x ))
y = readline("How many conditions? ")
print(paste("You have ", y , "conditions")
###########################
Esta parte para renombrar las intensidades usando x e y
###### 2
for (i in 1:y){
varnames[i] <- c(rep(paste0("gp_", i), y))
}
varnames
Group <- factor(varnames)
nu.Norm <- select_if(Norm, is.numeric)
#this part will change the columns names, do we want that?
names(nu.Norm) <- paste0(rep(varnames, each=x), "_", 1:x)
nu.Norm
##############################
Crear listas para el boxplot
###### 3
*listgp <- list(Norm[,6:(as.numeric(x)+5)],
Norm[,(as.numeric(x)+5):(as.numeric(x)*2+5)],
Norm[,(as.numeric(x)*2+5):(as.numeric(x)*3+5)])*
OR
f
*or (c in colnames(nu.Norm)){ dat1 <- nu.Norm %>% select(
contains("gp_1_")) dat2 <- nu.Norm %>% select( contains("gp_2_")) dat3 <-
nu.Norm %>% select( contains("gp_3_"))}list.gp <http://list.gp/> <http://list.gp <http://list.gp/>> <-
list(dat1, dat2, dat3)*
cv.df <- lapply(list.gp <http://list.gp/>, function(x){(apply(x,1,sd)/rowMeans(x))*100})
cvdf <-as.data.frame(do.call("cbind", cv.df))
colnames(cvdf)<-c(varnames)
###### crear la figura
palette<-rep(c(randomColor(y, luminosity="random")), times=c(1,1,1))
cvdf_melt<-reshape2::melt(cvdf)
g5 <-ggplot( cvdf_melt, aes(x=variable,
y=value))+geom_boxplot(color="black",fill=palette, alpha=0.8)+##,
fill="Experiment"
scale_y_continuous(limits=c(0,100), breaks=seq(0,100, by=10))+
theme_bw()+
theme(panel.grid.major = element_line(colour = "gray85"),
panel.grid.minor = element_line(colour = "gray85"),
axis.text.x = element_text(color = "black", size = 12,angle=45,
hjust=1,vjust=1),
axis.text.y= element_text(color = "black", size = 12,angle=0,
hjust=0.5,vjust=0.5),
axis.title.x=element_text(color = "black", size = 15,angle=0,
hjust=0.5,vjust=0.5),
axis.title.y=element_text(color = "black", size = 15,angle=90,
hjust=0.5,vjust=0.5),
axis.ticks.length = unit(5, "pt"),
axis.ticks = element_line(size = 1),
legend.position="none",
title =element_text(size=12))+
labs(x="", y = "CV(%)", title="Coefficient of variation")
g5
GRACIAS!
[[alternative HTML version deleted]]
_______________________________________________ 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
Hola Leticia, podrÃas compartir una sección de tus datos para comprender el problema correctamente por favor ? Se me ocurre que con la librerÃa data.table puede ser muy sencillo resolver el problema, pero necesito saber cómo están organizados tus datos. Saludos !! Eric. On Wed, 26 Jun 2024 16:50:39 +0200
Leticia G Leon <gl.leticia en gmail.com> wrote:
Hola
Soy Leticia, querÃa hacer una consulta al grupo a ver si me podéis ayudar.
Tengo unos datos de proteÃnas, el data frame es: 5 columnas iniciales que
tienen información sobre las proteÃnas y después las columnas con las
intensidades, de las cuales no se cuantas condiciones tienen ni cuántas
réplicas por condición.
Estoy intentando hacer un cálculo del coeficiente de variación por grupo y
representarlo en con boxplots.
Para poder hacer este plot, la mejor opción que he encontrado es crear una
lista por grupo y calcular el coeficiente de variación por lista, ejemplo:
tres condiciones == tres listas == 3 CV == 3 box in the plot.
Mi problema y donde necesito ayuda es que no consigo hacer un
código general para poder hacer las listas de forma automática, y esta
parte es el cuello de botella que siempre necesita que sea hardcoded (en
negrita) abajo.
He puesto los pasos que tengo,
1) pedir numero de replicas y condiciones
2) renombrar las intensidades en base a lo anterior
3) hacer las listas ************ (AYUDA)
El codigo que tengo hasta ahora es:
######### 1
## Esta parte para introducir el numero de replicas y condiciones, que
varia segun el experimento
x = readline("Enter number of replicates: ")
print(paste("Number of replicates:", x ))
y = readline("How many conditions? ")
print(paste("You have ", y , "conditions")
###########################
Esta parte para renombrar las intensidades usando x e y
###### 2
for (i in 1:y){
varnames[i] <- c(rep(paste0("gp_", i), y))
}
varnames
Group <- factor(varnames)
nu.Norm <- select_if(Norm, is.numeric)
#this part will change the columns names, do we want that?
names(nu.Norm) <- paste0(rep(varnames, each=x), "_", 1:x)
nu.Norm
##############################
Crear listas para el boxplot
###### 3
*listgp <- list(Norm[,6:(as.numeric(x)+5)],
Norm[,(as.numeric(x)+5):(as.numeric(x)*2+5)],
Norm[,(as.numeric(x)*2+5):(as.numeric(x)*3+5)])*
OR
f
*or (c in colnames(nu.Norm)){ dat1 <- nu.Norm %>% select(
contains("gp_1_")) dat2 <- nu.Norm %>% select( contains("gp_2_")) dat3 <-
nu.Norm %>% select( contains("gp_3_"))}list.gp <http://list.gp> <-
list(dat1, dat2, dat3)*
cv.df <- lapply(list.gp, function(x){(apply(x,1,sd)/rowMeans(x))*100})
cvdf <-as.data.frame(do.call("cbind", cv.df))
colnames(cvdf)<-c(varnames)
###### crear la figura
palette<-rep(c(randomColor(y, luminosity="random")), times=c(1,1,1))
cvdf_melt<-reshape2::melt(cvdf)
g5 <-ggplot( cvdf_melt, aes(x=variable,
y=value))+geom_boxplot(color="black",fill=palette, alpha=0.8)+##,
fill="Experiment"
scale_y_continuous(limits=c(0,100), breaks=seq(0,100, by=10))+
theme_bw()+
theme(panel.grid.major = element_line(colour = "gray85"),
panel.grid.minor = element_line(colour = "gray85"),
axis.text.x = element_text(color = "black", size = 12,angle=45,
hjust=1,vjust=1),
axis.text.y= element_text(color = "black", size = 12,angle=0,
hjust=0.5,vjust=0.5),
axis.title.x=element_text(color = "black", size = 15,angle=0,
hjust=0.5,vjust=0.5),
axis.title.y=element_text(color = "black", size = 15,angle=90,
hjust=0.5,vjust=0.5),
axis.ticks.length = unit(5, "pt"),
axis.ticks = element_line(size = 1),
legend.position="none",
title =element_text(size=12))+
labs(x="", y = "CV(%)", title="Coefficient of variation")
g5
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
Hola, que tal? Sin saber nada mas de los datos, por lo que dices, mi aprioximacion seria usar la funcion split, e.g.: splittedData <- split(myData, "variablegrupo/condicion") Esto te crearia una lista con tantos objectos como condiciones tengas. Saludos
On 6/27/24 10:15, Leticia G Leon wrote:
Muchas fracias por la rapida contastacion Javier. Si, ya me he dado cuenta que a veces es mas limpiar y formatear que calcular. Lo que yo necesito hacer no es crear un data.frame, es crear una lista por cada grupo/condicion de muestras. Y queria hacerlo en un for loop, para que no tuviese que indicar cuantas listas necesito si no que cogiese esa informacion del usuario (y) Creo que no me explique muy bien, lo siento. Gracias Lety El mié, 26 jun 2024 a las 17:40, Javier Marcuzzi (< javier.ruben.marcuzzi en gmail.com>) escribió:
Hola Leticia Acomodar datos para analizar suele llevar más trabajo que el análisis. Yo prefiero en un data.frame colocar todos los datos, porque siempre es más fácil filtrar que agregar. Cuándo tengo el data.frame con todo, realizo un plot (datos), y muchas veces en la gráfica veo cosas que me llaman la atención, de esta forma busco algo de antemano no sospechaba. No es necesario que conozcas el número de réplica, pueden armar de tal forma que cada réplica es una fila que agregas al data.frame. Pero son formas de trabajar, seguramente hay personas más inteligentes que yo. Javier Rubén Marcuzzi
El 26 jun 2024, a las 11:50?a. m., Leticia G Leon <gl.leticia en gmail.com>
escribió:
Hola Soy Leticia, querÃa hacer una consulta al grupo a ver si me podéis
ayudar.
Tengo unos datos de proteÃnas, el data frame es: 5 columnas iniciales que tienen información sobre las proteÃnas y después las columnas con las intensidades, de las cuales no se cuantas condiciones tienen ni cuántas réplicas por condición. Estoy intentando hacer un cálculo del coeficiente de variación por grupo
y
representarlo en con boxplots. Para poder hacer este plot, la mejor opción que he encontrado es crear
una
lista por grupo y calcular el coeficiente de variación por lista,
ejemplo:
tres condiciones == tres listas == 3 CV == 3 box in the plot.
Mi problema y donde necesito ayuda es que no consigo hacer un
código general para poder hacer las listas de forma automática, y esta
parte es el cuello de botella que siempre necesita que sea hardcoded (en
negrita) abajo.
He puesto los pasos que tengo,
1) pedir numero de replicas y condiciones
2) renombrar las intensidades en base a lo anterior
3) hacer las listas ************ (AYUDA)
El codigo que tengo hasta ahora es:
######### 1
## Esta parte para introducir el numero de replicas y condiciones, que
varia segun el experimento
x = readline("Enter number of replicates: ")
print(paste("Number of replicates:", x ))
y = readline("How many conditions? ")
print(paste("You have ", y , "conditions")
###########################
Esta parte para renombrar las intensidades usando x e y
###### 2
for (i in 1:y){
varnames[i] <- c(rep(paste0("gp_", i), y))
}
varnames
Group <- factor(varnames)
nu.Norm <- select_if(Norm, is.numeric)
#this part will change the columns names, do we want that?
names(nu.Norm) <- paste0(rep(varnames, each=x), "_", 1:x)
nu.Norm
##############################
Crear listas para el boxplot
###### 3
*listgp <- list(Norm[,6:(as.numeric(x)+5)],
Norm[,(as.numeric(x)+5):(as.numeric(x)*2+5)],
Norm[,(as.numeric(x)*2+5):(as.numeric(x)*3+5)])*
OR
f
*or (c in colnames(nu.Norm)){ dat1 <- nu.Norm %>% select(
contains("gp_1_")) dat2 <- nu.Norm %>% select( contains("gp_2_")) dat3
<-
nu.Norm %>% select( contains("gp_3_"))}list.gp <http://list.gp> <-
list(dat1, dat2, dat3)*
cv.df <- lapply(list.gp, function(x){(apply(x,1,sd)/rowMeans(x))*100})
cvdf <-as.data.frame(do.call("cbind", cv.df))
colnames(cvdf)<-c(varnames)
###### crear la figura
palette<-rep(c(randomColor(y, luminosity="random")), times=c(1,1,1))
cvdf_melt<-reshape2::melt(cvdf)
g5 <-ggplot( cvdf_melt, aes(x=variable,
y=value))+geom_boxplot(color="black",fill=palette, alpha=0.8)+##,
fill="Experiment"
scale_y_continuous(limits=c(0,100), breaks=seq(0,100, by=10))+
theme_bw()+
theme(panel.grid.major = element_line(colour = "gray85"),
panel.grid.minor = element_line(colour = "gray85"),
axis.text.x = element_text(color = "black", size = 12,angle=45,
hjust=1,vjust=1),
axis.text.y= element_text(color = "black", size = 12,angle=0,
hjust=0.5,vjust=0.5),
axis.title.x=element_text(color = "black", size = 15,angle=0,
hjust=0.5,vjust=0.5),
axis.title.y=element_text(color = "black", size = 15,angle=90,
hjust=0.5,vjust=0.5),
axis.ticks.length = unit(5, "pt"),
axis.ticks = element_line(size = 1),
legend.position="none",
title =element_text(size=12))+
labs(x="", y = "CV(%)", title="Coefficient of variation")
g5
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
[[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
Buenos dÃas, No entiendo mucho del código que mencionas para la parte (3), tampoco comprendo las ideas de número de condiciones *y *y número de réplicas *x*. Sin embargo leyendo el propósito de *calcular el coeficiente de variación por lista*, *ejemplo: **tres condiciones == tres listas == 3 CV == 3, *considero que la función *group_by* podrÃa ayudarte a realizar el cálculo del coeficiente de variación por grupo, en este caso el grupo será la condición, sin embargo veo que cada condición será una columna o varias dependiendo de las réplicas -esto no sé si sea lo correcto-, si cada condición sólo tiene una columna que lo represente deberÃa ser algo asÃ: data.frame %>% pivot_longer( names_to = 'condition', values_to = 'whatever') %>% group_by(condition) %>% summarise(CV = sd(whatever,na.rm = TRUE) / mean(whatever, na.rm = TRUE) ) ungroup La función *pivot_longer* permite que los valores que tienes en columnas pasen a ser filas, ya con este acomodo la función *group_by* puede actuar sin tanto problema, puedes hacer lo mismo para crear las listas que necesites. En este caso la condición sólo tiene una columna, si una condición tiene asociadas más columnas sólo debes tener cuidado para agruparlo cuidadosamente, quizá creando una etiqueta que te englobe todas las réplicas de una misma condición puedas usar el group_by(condition) que te expongo. Ojalá esto te ayude, José Luis El vie, 28 jun 2024 a las 7:57, Fer Arce via R-help-es (< r-help-es en r-project.org>) escribió:
Hola, que tal? Sin saber nada mas de los datos, por lo que dices, mi aprioximacion seria usar la funcion split, e.g.: splittedData <- split(myData, "variablegrupo/condicion") Esto te crearia una lista con tantos objectos como condiciones tengas. Saludos On 6/27/24 10:15, Leticia G Leon wrote:
Muchas fracias por la rapida contastacion Javier. Si, ya me he dado cuenta que a veces es mas limpiar y formatear que calcular. Lo que yo necesito hacer no es crear un data.frame, es crear una lista
por
cada grupo/condicion de muestras. Y queria hacerlo en un for loop, para
que
no tuviese que indicar cuantas listas necesito si no que cogiese esa informacion del usuario (y) Creo que no me explique muy bien, lo siento. Gracias Lety El mié, 26 jun 2024 a las 17:40, Javier Marcuzzi (< javier.ruben.marcuzzi en gmail.com>) escribió:
Hola Leticia Acomodar datos para analizar suele llevar más trabajo que el análisis. Yo prefiero en un data.frame colocar todos los datos, porque siempre es más fácil filtrar que agregar. Cuándo tengo el data.frame con todo,
realizo
un plot (datos), y muchas veces en la gráfica veo cosas que me llaman la atención, de esta forma busco algo de antemano no sospechaba. No es necesario que conozcas el número de réplica, pueden armar de tal forma que cada réplica es una fila que agregas al data.frame. Pero son formas de trabajar, seguramente hay personas más inteligentes que yo. Javier Rubén Marcuzzi
El 26 jun 2024, a las 11:50?a. m., Leticia G Leon <
gl.leticia en gmail.com>
escribió:
Hola Soy Leticia, querÃa hacer una consulta al grupo a ver si me podéis
ayudar.
Tengo unos datos de proteÃnas, el data frame es: 5 columnas iniciales
que
tienen información sobre las proteÃnas y después las columnas con las intensidades, de las cuales no se cuantas condiciones tienen ni cuántas réplicas por condición. Estoy intentando hacer un cálculo del coeficiente de variación por
grupo
y
representarlo en con boxplots. Para poder hacer este plot, la mejor opción que he encontrado es crear
una
lista por grupo y calcular el coeficiente de variación por lista,
ejemplo:
tres condiciones == tres listas == 3 CV == 3 box in the plot. Mi problema y donde necesito ayuda es que no consigo hacer un código general para poder hacer las listas de forma automática, y esta parte es el cuello de botella que siempre necesita que sea hardcoded
(en
negrita) abajo.
He puesto los pasos que tengo,
1) pedir numero de replicas y condiciones
2) renombrar las intensidades en base a lo anterior
3) hacer las listas ************ (AYUDA)
El codigo que tengo hasta ahora es:
######### 1
## Esta parte para introducir el numero de replicas y condiciones, que
varia segun el experimento
x = readline("Enter number of replicates: ")
print(paste("Number of replicates:", x ))
y = readline("How many conditions? ")
print(paste("You have ", y , "conditions")
###########################
Esta parte para renombrar las intensidades usando x e y
###### 2
for (i in 1:y){
varnames[i] <- c(rep(paste0("gp_", i), y))
}
varnames
Group <- factor(varnames)
nu.Norm <- select_if(Norm, is.numeric)
#this part will change the columns names, do we want that?
names(nu.Norm) <- paste0(rep(varnames, each=x), "_", 1:x)
nu.Norm
##############################
Crear listas para el boxplot
###### 3
*listgp <- list(Norm[,6:(as.numeric(x)+5)],
Norm[,(as.numeric(x)+5):(as.numeric(x)*2+5)],
Norm[,(as.numeric(x)*2+5):(as.numeric(x)*3+5)])*
OR
f
*or (c in colnames(nu.Norm)){ dat1 <- nu.Norm %>% select(
contains("gp_1_")) dat2 <- nu.Norm %>% select( contains("gp_2_"))
dat3
<-
nu.Norm %>% select( contains("gp_3_"))}list.gp <http://list.gp> <-
list(dat1, dat2, dat3)*
cv.df <- lapply(list.gp, function(x){(apply(x,1,sd)/rowMeans(x))*100})
cvdf <-as.data.frame(do.call("cbind", cv.df))
colnames(cvdf)<-c(varnames)
###### crear la figura
palette<-rep(c(randomColor(y, luminosity="random")), times=c(1,1,1))
cvdf_melt<-reshape2::melt(cvdf)
g5 <-ggplot( cvdf_melt, aes(x=variable,
y=value))+geom_boxplot(color="black",fill=palette, alpha=0.8)+##,
fill="Experiment"
scale_y_continuous(limits=c(0,100), breaks=seq(0,100, by=10))+
theme_bw()+
theme(panel.grid.major = element_line(colour = "gray85"),
panel.grid.minor = element_line(colour = "gray85"),
axis.text.x = element_text(color = "black", size = 12,angle=45,
hjust=1,vjust=1),
axis.text.y= element_text(color = "black", size = 12,angle=0,
hjust=0.5,vjust=0.5),
axis.title.x=element_text(color = "black", size = 15,angle=0,
hjust=0.5,vjust=0.5),
axis.title.y=element_text(color = "black", size = 15,angle=90,
hjust=0.5,vjust=0.5),
axis.ticks.length = unit(5, "pt"),
axis.ticks = element_line(size = 1),
legend.position="none",
title =element_text(size=12))+
labs(x="", y = "CV(%)", title="Coefficient of variation")
g5
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
[[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
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es