Alguien me puede ayudar con esto:
He calculado 2 valores diferentes: la desviación estándar y el z-score.

Estoy tratando de averiguar cómo escribir en un archivo csv en diferentes columnas en R. tengo alrededor de 90 diferentes valores de desviación estándar y el 90 zscore valores.
Así que quiero que todos mis valores de desviación estándar en 1 columna y todos mis puntuaciones z en la 2ª columna. Yo también quiero la etiqueta de la columna con la desviación estándar y el z-score.

Ahora mismo estoy calcular y escribir en archivos separados en un bucle como este:

write.table(st_dev, file="st_dev.csv", sep=",", row.names=FALSE, col.names=FALSE, append=TRUE)
write.table(z_score, file="z.csv", sep=",", row.names=FALSE, col.names=FALSE, append=TRUE)

Edición:

for(i in 1:130)
 {
 y=test3[i,3:52]
 z=as.numeric(y)
 average = mean(z)
 st_dev = sd(z)
 dfrm <- data.frame(average=average, st_dev=st_dev)
 write.table(dfrm, file="av_st.csv", sep=",", row.names=FALSE, col.names=TRUE, append=TRUE)
}

¿Cómo puedo tener los encabezados de columna sólo una vez en la parte superior en lugar de la impresión para cada valor en el archivo csv? Gracias

  • Ya que usted está utilizando append=TRUE las dos respuestas necesitaría la declaración también. Sin embargo, es mucho más rápido para asignar los dos valores a un data.frame dentro del bucle y solo escribir en un archivo una vez. Si publicas más de su código bucle (potencialmente en otra pregunta) estoy seguro de que podría acelerar la escritura de paso dramáticamente.
InformationsquelleAutor DianaHelen | 2012-03-13

2 Comentarios

  1. 4

    Hacer un dataframe y la escritura.

    y=test3[1,3:52]
     z=as.numeric(y) 
    average = mean(z) 
    st_dev = sd(z) }
     dfrm <- data.frame(average = average, st_dev = st_dev)
    write.table(dfrm, file="z_st.csv", sep=",", row.names=FALSE, col.names=TRUE)
    
    for(i in 2:130) { y=test3[i,3:52]
     z=as.numeric(y) 
    average = mean(z) 
    st_dev = sd(z) }
     dfrm <- data.frame(average = average, st_dev = st_dev)
    write.table(dfrm, file="z_st.csv", sep=",", row.names=FALSE, col.names=FALSE)}
    • Cuando estoy tratando de hacerlo de esta manera me da la siguiente advertencia:En la escritura.tabla(dfrm, file = «z_st.csv», sep = «,», fila.nombres = FALSE, … : anexar los nombres de columna en el archivo. Debo ignorar esta advertencia? También el archivo tiene 2 columnas, como yo quería, pero por cada desviación estándar y zscore valor se escribe los nombres de columna en el archivo porque yo soy el cálculo de los valores en el bucle. ¿Cómo puedo poner los nombres de columna en la parte superior sólo?Es allí una manera de hacer eso?
    • No entiendo este comentario o la de arriba por Justin. Yo no soy de usar append =TRUE y no debe ser solamente un encabezado. Si los datos se compone de dos grupos separados y que se va a escribir estas por separado, entonces usted necesita para hacer que claro en la pregunta. A continuación, se necesita una tercera columna para ser el identificador de grupo.
    • He editado la pregunta
    • Editado mi respuesta.
  2. 0

    Esto debe ser lo que usted está buscando:

    write.table(cbind(st_dev,z_score), 
    file="whatever.csv",row.names=F,col.names=c('st_dev','z_score'))

Dejar respuesta

Please enter your comment!
Please enter your name here