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.marcu...@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.leti...@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@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es



        [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

_______________________________________________
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

Responder a