2017-05-26 3 views
-1

die kontinuierlichen Variablen zu kategorisieren, habe ich Binning mit dem folgenden CodeWie Binning-Ergebnisse auf Rohdaten angewendet werden?

german<-read.csv("http://freakonometrics.free.fr/german_credit.csv", header=TRUE) 
F=c(1,2,4,5,7,8,9,10,11,12,13,15,16,17,18,19,20,21) 
for(i in F) german[,i]=as.factor(german[,i]) 
str(german) 

german_interval<-classIntervals(german$Duration.of.Credit..month., n=4 ,style = "equal") 
german_interval 

Das Ergebnis Binning ist wie folgt.

style: equal 
    one of 4,960 possible partitions of this variable into 4 classes 
[4,21) [21,38) [38,55) [55,72] 
    554  359  73  14 

So mag ich den Wert ändern 4 < = x < 21 = 1, 21 < = x < 38 = 2, 38 < = x < 55 = 3, 55 < = x < 72 = 4 . Dann, wie Sie diesen Wert in Rohdaten anwenden ??

Wenn Sie diese Rohdaten sehen, gibt es auch eine Zielvariable. Es ist eine Kreditwürdigkeit. Und ich möchte das Verhältnis der Zielvariablen zu jedem Abschnitt wissen. Speziell, [4, 21] = 0:?%/1:?%, [21,35] = 0:?%, 1:?%. Wie macht man das als R-Code?

+0

Glaubwürdigkeit ist eine Faktorvariable mit zwei Ebenen: "0" und "1". Du verlangst ein Verhältnis von etwas zu etwas, aber es ist überhaupt nicht klar, was diese beiden "Somethings" sind. Ich denke, Sie müssen genauer über die notwendigen Berechnungen von viel mehr Menschen werden mich fragen, dass diese Frage aus Mangel an Klarheit geschlossen werden. –

Antwort

1

Statt classInt::classinterval, eine einfachere Lösung wäre cut in Base zu verwenden:

german$gp <- cut(german$Duration.of.Credit..month., breaks=4, include.lowest=T) 
levels(german$gp) <- c(1,2,3,4) 
+0

Wenn Sie die deutschen Rohdaten sehen, gibt es eine Zielvariable. Es ist eine Kreditwürdigkeit. Und ich möchte das Verhältnis der Zielvariablen zu jedem Abschnitt wissen. Spezifisch, [4, 21] = 0: 40%/1: 60%, [21,35] = 0: 20%, 1: 80%. wie das? Danke für deinen netten Code! –

+0

@ 순우순우 Wie sollten wir das wissen? Stellen Sie Ihre Fragen fertig oder teilen Sie sie in separate Fragen auf. Verwenden Sie [Bearbeiten], um Fragen zu ändern. Es ist wirklich ärgerlich, wenn man in den Kommentaren Follow-up-Fragen hat. Es ist auch ärgerlich, keinen Upvote für nützlichen Code zu sehen. –

2

Sie die Intervalle verwenden, können Sie mit cut haben, indem man einfach die Pausen angeben.

## Some sample data 
set.seed(2017) 
x = rnorm(20,36,13) 

cut(x, breaks=c(4,21,38,55,72), include.lowest=TRUE, right=FALSE) 
[1] [38,55) [21,38) [38,55) [4,21) [21,38) [38,55) [4,21) [21,38) [21,38) 
[10] [55,72] [38,55) [55,72] [21,38) [38,55) [4,21) [38,55) [21,38) [38,55) 
[19] [21,38) [21,38) 
Levels: [4,21) [21,38) [38,55) [55,72] 
0

Wenn die Intervalle auf der linken Seite der Basisfunktion sind geschlossen ist findInterval prägnanteste.

german_interval<-findInterval(german$Duration.of.Credit..month., c(4,21,38,55,72)) 
german_interval 

Diese Funktion liefert natürlich einen numerischen Wert, und ich bevorzuge die links-geschlossene Vorgabe.

Verwandte Themen