2017-05-26 5 views
-1

、私は次のようにビニングの結果は、次のコードビニング結果を生データに適用するにはどうすればよいですか?連続変数を分類する

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 

とビニング使用しました。

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 

だから、私は、値を変更したい4 < = X < 21 = 1、21 < = X < 38 = 2、38 < = X < 55 = 3、55 < = X < 72 = 4 。 次に、この値を生データにどのように適用するのですか?

また、生データが表示されている場合は、ターゲット変数があります。それは信用度です。そして、私はターゲット変数と各セクションの比率を知りたい。具体的には、[4,21] = 0:Δ%/ 1:Δ%、[21,35] = 0:Δ%、1:Δ%。どのようにRコードとしてそれを行うには?

+0

信用度は、「0」と「1」の2つのレベルを持つ要因変数です。あなたは何かの何かに対する比率を求めていますが、その2つの「何か」が何であるかは明確ではありません。私は、より多くの人々の必要な計算についてより具体的にする必要があると思います。 –

答えて

1

代わりのclassInt::classinterval、簡単なソリューションをベースにcutを使用することです:

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

ドイツ語の生データが表示されている場合は、ターゲット変数があります。それは信用度です。具体的には、[4,21] = 0:40%/ 1:60%、[21,35] = 0:20%、1:80%という目標変数の比率を知りたい。どのように?あなたの素敵なコードをありがとう! –

+0

@この순りウ私たちはどうしたらそれを知っていたでしょうか?質問を完了させるか、別の質問に分解してください。 [編集]を使用して質問を修正してください。コメントにフォローアップの質問を投稿するのは本当に面倒です。また、便利なコードのためのupvoteを見ないように迷惑をかける。 –

2

あなたは、単に休憩を指定することによって、cutをお持ちの間隔を使用することができます。

## 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

間隔をfindIntervalが最も簡潔である左ベース関数に閉じられます。

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

この関数は、自然に数値を提供し、私は左閉じデフォルトを好みます。

関連する問題