指定R中连续数据的分隔值范围
问题描述:
我有一组交易值,范围是0-15000美元。我绘制了一个直方图,指定$ 250 bin值的间隔,这很有帮助。我想要做的是回到数据框中,并在数据框中创建我自己的bin值。箱子将指定交易落入的范围,例如:0-250,251-499,500-749,750 ... 250,一直到15,000。指定R中连续数据的分隔值范围
我看着这个漂亮的帖子Generate bins from a data frame关于'cut'和'findInterval',但他们并没有真正满足我的期望。这或者是令人讨厌的因素,对于低仓位区域看起来不错,但是一旦我获得高于$ x,000的价格,我就会得到e值(1.27e + 04,1.3e04)。
我想的是:
Tran ID Amount Bin
135 $249.22 0-250
138 $1,022.01 1000-1249
155 $10,350.11 10,249-10,500
这可能与'cut'
或'findInterval'
或有更好的实施?
答
cut
是解决这个问题的方法。如果你不喜欢带括号的输出,你可以使用一些数据操作来让它看起来像你想要的样子。
bins <- seq(0, 15000, by=250)
Amount2 <- as.numeric(gsub("\\$|,", "", df$Amount))
labels <- gsub("(?<!^)(\\d{3})$", ",\\1", bins, perl=T)
rangelabels <- paste(head(labels,-1), tail(labels,-1), sep="-")
df$Bin <- cut(Amount2, bins, rangelabels)
我们首先通过250接下来创建一个从0到15000的顺序,我们消除了美元符号和逗号格式化Amount
列并保存到变量Amount2
。然后我们通过在前三位数字后插入逗号来格式化输出标签。我们将在最后的Bin
列中使用该变量。
变量rangelabels
将箱子断点与连字符组合在一起。主要功能是,cut(Amount2, bins, rangelabels)
。第一个参数Amount2
是被剪切的数据帧向量。第二个参数bins
提供间隔的中断。最后一个参数,rangelabels
是输出名称造成的载体:
df
TranID Amount Bin
1 135 $249.22 0-250
2 138 $1,022.01 1,000-1,250
3 155 $10,350.11 10,250-10,500
的字符串操作是去指定二进制数值作为一个独立的向量的方式!独立地,我能够使用{df.tn.amount $ cuts Zach