2014-05-02 51 views
0

我有这样的数据:我怎样才能把数据帧数据到垃圾箱

12.1 12.5 12.6 12.7 12.8 13.0 13.2 13.2 13.2 13.3 13.3 13.3 
13.4 13.4 13.5 13.5 13.7 13.7 13.7 13.8 13.9 14.1 14.1 14.2 
14.3 14.3 14.3 14.4 14.4 14.5 14.6 14.6 14.6 14.8 14.8 14.9 
14.9 14.9 15.2 15.2 15.3 15.3 15.5 15.6 15.6 15.7 15.8 15.9 
16.1 16.1 16.3 16.4 16.4 16.5 16.7 16.9 17.0 

,我想将其放到这些回收箱:

12.1 12.5 12.6 12.7 12.8 13.0 13.2 13.3 13.4 13.5 13.7 13.8 
13.9 14.1 14.2 14.3 14.4 14.5 14.6 14.8 14.9 15.2 15.3 15.5 
15.6 15.7 15.8 15.9 16.1 16.3 16.4 16.5 16.7 16.9 17.0 

因此,例如,在13.2和13.3个分档将有3个项目等。

我应该提到,数据集有其他列我想跟随这个数字数据进入箱。

我是R新手,想弄清binning。

这里是代码设置我的数据,以及独特的价值观:

test <- function() { 
    data <- c(12.1,12.5,12.6,12.7,12.8,13.0,13.2,13.2,13.2,13.3,13.3,13.3, 
13.4,13.4,13.5,13.5,13.7,13.7,13.7,13.8,13.9,14.1,14.1,14.2, 
14.3,14.3,14.3,14.4,14.4,14.5,14.6,14.6,14.6,14.8,14.8,14.9, 
14.9,14.9,15.2,15.2,15.3,15.3,15.5,15.6,15.6,15.7,15.8,15.9, 
16.1,16.1,16.3,16.4,16.4,16.5,16.7,16.9,17.0) 

    unique_data = unique(data) 

    print(unique_data) 
} 

回答

1

假设“x”是你的输入向量和“y”是你的休息点向量,你应该只使用cut

cut(x, c(-Inf, y, Inf)) 

这里的箱数是什么样子的例子:

table(cut(x, c(-Inf, y, Inf))) 
# 
# (-Inf,12.1] (12.1,12.5] (12.5,12.6] (12.6,12.7] (12.7,12.8] (12.8,13] 
#   1   1   1   1   1   1 
# (13,13.2] (13.2,13.3] (13.3,13.4] (13.4,13.5] (13.5,13.7] (13.7,13.8] 
#   3   3   2   2   3   1 
# (13.8,13.9] (13.9,14.1] (14.1,14.2] (14.2,14.3] (14.3,14.4] (14.4,14.5] 
#   1   2   1   3   2   1 
# (14.5,14.6] (14.6,14.8] (14.8,14.9] (14.9,15.2] (15.2,15.3] (15.3,15.5] 
#   3   2   3   2   2   1 
# (15.5,15.6] (15.6,15.7] (15.7,15.8] (15.8,15.9] (15.9,16.1] (16.1,16.3] 
#   2   1   1   1   2   1 
# (16.3,16.4] (16.4,16.5] (16.5,16.7] (16.7,16.9] (16.9,17] (17, Inf] 
#   2   1   1   1   1   0 

您可能必须调整一些参数以使值落入您期望的值,但cut通常是此功能的函数,以及findInterval作为近亲。

+0

该数据实际上是一个两列数据框。我需要基于第二列的唯一值对数据框的行进行分箱,但在结果中,我仍然需要数据框的两列数据完好无损。对第二列进行分箱只是帮助我确定哪些行具有相同的第二列值。 –

+0

@GregLafrance,请尝试做一个[可重现的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),最好是一个也是(1 )小,(2)包括您想要的输出的一个例子。 – A5C1D2H2I1M1N2O1R2T1

+0

增加了一个函数来创建数据并获得唯一值。现在我需要了解如何通过唯一值来分组数据。 –

0

dplyr package包含一些方便的工具来做这种事情。

假设你有一个数据帧df,你所提到的值是一列value,您可以bin和计算使用的语法类似唯一值:

binned = df %.% group_by(value) %.% summarise(count=n()) 

binned将列valuecount

summarise可让您添加其他摘要统计信息。如果你想添加一些列other_value的意思,你能做到这一点,如:

binned = df %.% group_by(value) %.% summarise(count=n(), mean_other_val=mean(other_val)) 

现在,binned将列valuecount,并mean_other_val

相关问题