我正在尝试创建等长的组。
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)
答案 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)