2017-05-26 69 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」。你是在尋求某種東西與某種東西的比例,但是這兩個「東西」究竟是什麼都不清楚。我認爲你需要更具體的關於需要計算的更多人會和我一起問這個問題,因爲缺乏明確性。 –

回答

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 

這個函數自然會提供一個數值,我更喜歡left-closed的默認值。

相關問題