在下面的代码
android:fitsSystemWindows="true"
中正在使用函数并且已经指定了值,但由于这是一个示例代码,它只是硬编码为少数,但在我的实际情况中,我们有超过1000万条记录,因此识别金额变量的范围非常困难。
所以我的问题是:
答案 0 :(得分:1)
您可以让函数cut
通过提供单个整数 n 作为输入来完成选择切割点的工作,而不是手动指定切割点。该功能将自动创建 n 等长间隔。
要调整间隔标签中使用的位数,请将可选输入dig.lab
设置为标签的最大位数。
在您的示例中,您可以使用以下内容:
df$group = cut(df$amount,breaks=7, dig.lab=6)
结果:
> df
id amount group
1 1 30185 (343.588,94773.1]
2 2 33894 (343.588,94773.1]
3 3 33642 (343.588,94773.1]
4 4 29439 (343.588,94773.1]
5 5 27879 (343.588,94773.1]
6 6 52347 (343.588,94773.1]
7 7 4101 (343.588,94773.1]
8 8 5425 (343.588,94773.1]
9 9 6541 (343.588,94773.1]
10 10 54589 (343.588,94773.1]
11 11 5214 (343.588,94773.1]
...
编辑:要获得更多常规标签,请使用seq
功能设置切割点。例如:
> df$group = cut(df$amount,breaks=seq(0,700000,25000), dig.lab=6)
> head(df)
id amount group
1 1 30185 (25000,50000]
2 2 33894 (25000,50000]
3 3 33642 (25000,50000]
4 4 29439 (25000,50000]
5 5 27879 (25000,50000]
6 6 52347 (50000,75000]
将在彼此相距25000处创建切割点。请注意,您需要指定范围的最小值和最大值(此处设置为0和700000)
答案 1 :(得分:0)
cut(x, breaks)
,打破两个或多个唯一切割点的数字向量或单个数字(大于或等于2),给出要切割x的区间数。
您可以设置dig.lab
以避免以指数显示。
df$group = cut(df$amount,c(10000, 20000, 30000, 40000, 50000, 60000, 70000), dig.lab = 10)