根据R中的可用值创建范围

时间:2017-12-26 09:01:24

标签: r

在下面的代码 android:fitsSystemWindows="true" 中正在使用函数并且已经指定了值,但由于这是一个示例代码,它只是硬编码为少数,但在我的实际情况中,我们有超过1000万条记录,因此识别金额变量的范围非常困难。

所以我的问题是:

  1. 是否可以从data.frame
  2. 中的金额可用值创建范围
  3. 对于下面的代码,即使在使用cut
  4. 之后,这些组也会以指数形式显示如何避免它

    选项(scipen = 999)

    scipen=999

    输出df

    enter image description here

2 个答案:

答案 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)