【发布时间】:2015-06-09 17:05:11
【问题描述】:
我正在尝试根据指定的 bin 大小向数字向量重复添加“固定数字”。但是,“固定数量”取决于数据范围。
例如;我的数据范围是 10 到 1010,我希望将数据分成 100 个 bin。因此,理想情况下,数据应该是这样的
Since 1010 - 10 = 1000
And 1000 / 100(The number of bin specified) = 10
Therefore the ideal data would look like this
bin1 - 10 (initial data)
bin2 - 20 (initial data + 10)
bin3 - 30 (initial data + 20)
bin4 - 40 (initial data + 30)
bin100 - 1010 (initial data + 1000)
现在真实数据稍微复杂一点,不是只有一个数据范围,而是多个数据范围,希望下面的例子能澄清一下
# Some fixed values
start <- c(10, 5000, 4857694)
end <- c(1010, 6500, 4897909)
理想情况下,我希望得到类似的东西
10 20
20 30
30 40
.. ..
5000 5015
5015 5030
5030 5045
.. ..
4857694 4858096 # Note theoretically it would have decimal places,
#but i do not want any decimal place
4858096 4858498
.. ..
到目前为止,我一直在考虑这种功能,但它似乎效率低下,因为 ;
1) 我必须重新输入函数 100 次(因为我的 bin 数是 100)
2)我找不到一种方法来沿着我的值重复该函数 - 换句话说,我的函数只能处理数据 10-1010 而不能处理下一个 5000-6500
# The range of the variable
width <- end - start
# The bin size (Number of required bin)
bin_size <- 100
bin_count <- width/bin_size
# Create a function
f1 <- function(x,y){
c(x[1],
x[1] + y[1],
x[1] + y[1]*2,
x[1] + y[1]*3)
}
f1(x= start,y=bin_count)
f1
[1] 10 20 30 40
也许任何提示或想法将不胜感激。提前致谢!
【问题讨论】:
-
在您的示例中,您将
bin4显示为数据+ 300,将bin100显示为数据+ 1000。你的意思是bin11?bin3 (+200) bin4 (+300) bin5 (+400) bin6 (+500) bin7 (+600) bin8 (+700) bin9 (+800) bin10 (+900) bin11 (+1000) -
如果您想要 100 个 bin,您必须在每个初始数据中添加 10
bin1 10 bin2 10+10 bin3 10 + 20 bin100 1000 +10 -
抱歉,问题已更正。非常感谢@plafort
-
我添加了一个可能提供您想要的输出的答案