等长组

时间:2019-12-12 19:13:32

标签: r

我正在尝试创建等长的组。

x <- data.frame(categories = c(27, 100:1000), categories2 = c(27, 100:1000)/1000, stringsAsFactors = FALSE)

我在这里创建5个等长的组。

seq(min(x$categories, na.rm = TRUE), max(x$categories, na.rm = TRUE), (max(x$categories, na.rm = TRUE) - min(x$categories, na.rm = TRUE))/5)

它返回此输出-

[1]   27.0  221.6  416.2  610.8  805.4 1000.0

我想要以下输出-

[1]   0  200  400  600  800 1000

类似地,我想要变量 categories2 -

[1]   0  0.2  0.4  0.6  0.8 1

更新 这适用于第一个变量,但不适用于小于1的值

round(seq(min(x$categories, na.rm = TRUE), max(x$categories, na.rm = TRUE), (max(x$categories, na.rm = TRUE) - min(x$categories, na.rm = TRUE))/5),-2)

3 个答案:

答案 0 :(得分:0)

因此,基本上,您想使用plyr软件包中的round_any

首先,您输入代码round_any(#, 100),这将为您提供第一个变量的结果。对于第二个您要使用round_any(#, 0.1)

如果我用您的语法替换#,它将是:

round_any(seq(min(x$categories, na.rm = TRUE), max(x$categories, na.rm = TRUE), (max(x$categories, na.rm = TRUE) - min(x$categories, na.rm = TRUE))/5), 100)

round_any(seq(min(x$categories2, na.rm = TRUE), max(x$categories2, na.rm = TRUE), (max(x$categories2, na.rm = TRUE) - min(x$categories2, na.rm = TRUE))/5), .1)

答案 1 :(得分:0)

我找到了没有任何包装的使用方法-

round(seq(min(x$categories2, na.rm = TRUE), max(x$categories2, na.rm = TRUE), (max(x$categories2, na.rm = TRUE) - min(x$categories2, na.rm = TRUE))/5)/0.1, 0.1)*0.1

答案 2 :(得分:0)

在R中,当您键入一个函数时,可以执行F1键查看详细信息。

用'round'表示,您可以用“ digits = x”选择想要的位数

因此,对于第一个,您指定了“ -2”,对于第二个,您仅指定了“ 1”:

round(seq(min(x$categories2, na.rm = TRUE), max(x$categories2, na.rm = TRUE), (max(x$categories2, na.rm = TRUE) - min(x$categories2, na.rm = TRUE))/5),  digits = 1)

或缩短为:

round(seq(min(x$categories2, na.rm = TRUE), max(x$categories2, na.rm = TRUE), (max(x$categories2, na.rm = TRUE) - min(x$categories2, na.rm = TRUE))/5), 1)

这也不在您的问题中,但是您可以使用'length.out'参数而不是'by'参数来缩短行:

round(seq(min(x$categories2), max(x$categories2), length.out=5), 1)