2013-03-19 8 views
21

Io uso cut e classIntervals per raggruppare i dati in R, che poi tracciamo con ggplot2. Quindi un taglio funzionamento di base per quantili con n = 3 sarebbe simile a questa:funzione di taglio nell'etichetta R senza notazioni scientifiche per l'uso in ggplot2

library(classInt) 

a<-c(1,10,100,1000,100000,1000000) 
b<-cut(a, 
breaks=data.frame(
    classIntervals(
    a,n=3,method="quantile")[2])[,1], 
include.lowest=T) 

dove b sarebbe:

[1] [1,70]   [1,70]   (70,3.4e+04] (70,3.4e+04] (3.4e+04,1e+06] (3.4e+04,1e+06] 
Levels: [1,70] (70,3.4e+04] (3.4e+04,1e+06] 

così la prima linea di questa uscita è un vettore con il mio dati raggruppati che Posso usare in ggplot2. Ma piuttosto che avere questo vettore in notazione scientifica vorrei che le etichette fossero [1,70] (70,34000] (3400,1000000]

Come posso ottenere? Qualsiasi aiuto sarebbe apprezzato, anche se avete altri metodi piuttosto che tagliare e classInt per ottenere lo stesso risultato.

+1

Se qualcuno utilizza funzioni simili a raggruppare i dati, si sentono liberi di controllare 'cut2' dal pacchetto' Hmisc' che fa in realtà il taglio bether che la mia funzione descritto sopra. Vedi anche: https://stat.ethz.ch/pipermail/r-help/2007-December/148468.html. in questo caso usa 'cifre = 10' per evitare notazioni scientifiche. – Joschi

risposta

31

Usa argomento dig.lab in cut funzione:

a<-c(1,10,100,1000,100000,1000000) 
b<-cut(a, 
breaks=data.frame(
    classIntervals(
    a,n=3,method="quantile")[2])[,1], 
include.lowest=T,dig.lab=10) ##Number of digits used 
b 
[1] [1,70]   [1,70]   (70,34000]  (70,34000]  
[5] (34000,1000000] (34000,1000000] 
Levels: [1,70] (70,34000] (34000,1000000] 
+0

@Jouni Helske - Cosa proponesti se il numero fosse qualcosa come 10^-17? – novice