为 R 中的连续数据指定 bin 范围值
Specifying bin range values for continuous data in R
我有一组交易值,范围是 0-15000 美元。我绘制了一个直方图,指定 $250 bin 值的间隔,这很有用。我想做的是返回数据框并在数据框中创建我自己的 bin 值。箱子将指定交易所属的范围,例如:0-250、251-499、500-749、750...乘以 250 一直到 15,000。
我看了这个关于 'cut' 和 'findInterval' 的漂亮 post Generate bins from a data frame,但它们并没有真正达到我的期望。对于低 bin 范围来说,这要么是令人讨厌的因素,但一旦我超过 $x,000,我就会得到 e-values (1.27e+04, 1.3e04)。
我想要的是:
Tran ID Amount Bin
135 9.22 0-250
138 ,022.01 1000-1249
155 ,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)
我们首先创建一个从 0 到 15,000 乘以 250 的序列。接下来我们通过消除美元符号和逗号来格式化 Amount
列并保存到变量 Amount2
。然后我们通过在前三位数字后插入逗号来格式化输出标签。我们将在最后的 Bin
列中使用该变量。
变量 rangelabels
将 bin 断点与连字符组合在一起。接下来是主要功能,cut(Amount2, bins, rangelabels)
。第一个参数 Amount2
是被切割的数据帧向量。第二个参数 bins
提供间隔的中断。最后一个参数 rangelabels
是输出结果的名称向量:
df
TranID Amount Bin
1 135 9.22 0-250
2 138 ,022.01 1,000-1,250
3 155 ,350.11 10,250-10,500
我有一组交易值,范围是 0-15000 美元。我绘制了一个直方图,指定 $250 bin 值的间隔,这很有用。我想做的是返回数据框并在数据框中创建我自己的 bin 值。箱子将指定交易所属的范围,例如:0-250、251-499、500-749、750...乘以 250 一直到 15,000。
我看了这个关于 'cut' 和 'findInterval' 的漂亮 post Generate bins from a data frame,但它们并没有真正达到我的期望。对于低 bin 范围来说,这要么是令人讨厌的因素,但一旦我超过 $x,000,我就会得到 e-values (1.27e+04, 1.3e04)。
我想要的是:
Tran ID Amount Bin
135 9.22 0-250
138 ,022.01 1000-1249
155 ,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)
我们首先创建一个从 0 到 15,000 乘以 250 的序列。接下来我们通过消除美元符号和逗号来格式化 Amount
列并保存到变量 Amount2
。然后我们通过在前三位数字后插入逗号来格式化输出标签。我们将在最后的 Bin
列中使用该变量。
变量 rangelabels
将 bin 断点与连字符组合在一起。接下来是主要功能,cut(Amount2, bins, rangelabels)
。第一个参数 Amount2
是被切割的数据帧向量。第二个参数 bins
提供间隔的中断。最后一个参数 rangelabels
是输出结果的名称向量:
df
TranID Amount Bin
1 135 9.22 0-250
2 138 ,022.01 1,000-1,250
3 155 ,350.11 10,250-10,500