2013-03-19 10 views
21

Używam cut i classIntervals do grupowania danych w R, które później wykreślam z ggplot2. Tak więc podstawowym cięcie operacja przez kwantyli z n = 3 będzie wyglądać następująco:Funkcja cięcia w oznaczeniu R- bez notacji naukowej do użytku w 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) 

gdzie b byłoby:

[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] 

więc pierwsza linia tego wyjścia jest wektorem z moim zgrupowanych danych, które Mogę użyć w ggplot2. Ale zamiast używać tego wektora w zapisie naukowym, chciałbym, aby etykiety były oznaczone jako pomocna, jakakolwiek pomoc byłaby doceniana, także jeśli masz inne metody zamiast cięcia i classInt, aby osiągnąć ten sam wynik.

+1

Jeśli ktoś wykorzystuje podobne funkcje do grupowania danych, prosimy sprawdzić '' cut2' z pakietu Hmisc' który faktycznie robi Bether cięcia niż mojej funkcji opisane powyżej. Zobacz także: https://stat.ethz.ch/pipermail/r-help/2007-December/148468.html. w tym przypadku użyj 'cyfr = 10', aby uniknąć naukowych zapisów. – Joschi

Odpowiedz

31

użycie argumentu dig.lab w cut funkcji:

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 - Co byś zaproponował, gdyby numer był podobny do 10^-17? – novice