Quiero crear histograma de la trama de datos, pero cada vez que se utiliza el código de tengo un error 'x' must be numeric.

    df <- data.frame(col1 = c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120),
    col2 = c(10, 21, 31, 41, 51, 61, 72, 82, 92, 104, 114, 134))

    hist(df)
  • df$col1 y df$col2 son numéricos.
  • Usted no puede crear el histograma de la trama de datos. Base hist función espera numérico del vector (es decir, la columna de marco de datos). ggplot puede trabajar con el marco de datos, pero se usan los valores de una columna de todos modos (aunque se puede usar otra columna para fines de agrupación).

3 Comentarios

  1. 4

    que usted puede hacer

    hist(df$col1)

    o

    with(df, hist(col2))

    Si desea que todas las columnas, cada una en su propio histogramas quizás podría hacer algo como

    par(mfrow=c(2,1))
    histout=apply(df,2,hist)
  2. 0

    Recomiendo usar la biblioteca ggplot
    aquí es un ejemplo

    generateHistogram  <- function(columnName) {
      #I used library(ggplot2)
      houseDFPlot <- ggplot(data=DF, aes(x=DF[columnName]))
      #layering
      houseDFPlot + geom_histogram()
    }
  3. -1

    Por favor, considere la posibilidad de otras visualizaciones por su ejemplo, como un histograma puede no ser la mejor para la comparación de los datos muy similares en col1 y col2.
    En su caso, sería útil para transformar su df por primera vez en una ordenada formato

    library(ggplot2)
    library(tidyr)
    
    df_tidy <- gather(df, cols, value) 

    y, a continuación, utilice uno de los siguientes gráficos que destacan las pequeñas diferencias en los datos:

    como la densidad gráfico:

    ggplot(df_tidy, aes(x = value)) + 
      geom_density(aes(color=cols))

    o diagrama de dispersión:

    ggplot(df_tidy, aes(x = value, y=cols)) + 
      geom_point(aes(color=cols), size=3) +
      scale_x_continuous(breaks = c(0,25,50,75,100,125))

    o boxplot:

    ggplot(df_tidy, aes(x = cols, y=value)) + 
      geom_boxplot(aes(fill=cols))

Dejar respuesta

Please enter your comment!
Please enter your name here