2017-05-26 60 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的默认值。

相关问题