使用剪切功能自定义间隔/区域以将数据制成表格

时间:2017-07-25 14:42:32

标签: r

我有一个变量,我想在一个列联表中使用,所以我想将变量的(离散)值切换成二进制(或者更确切地说是间隔),然后我可以从一个总体中对我的数据进行排序成。但是,无论如何我无法在网上找到允许我以下列方式选择我的垃圾箱:

[-30, -20)   [-20, -10)   [-10, 0)   0   (0, 10]   (10, 20]   (20, 30]

即。我想要一些间隔保持开放和右边闭合,一些是相反的,而在中间零点是完全不同的类别。无论如何我能做到吗?我只想制表数据。

1 个答案:

答案 0 :(得分:1)

我认为您需要两次调用cut

x <- sample(-30:30, 1000, replace = TRUE)

关键是使用right参数来获取闭包:

x_lower <- as.character(cut(x, breaks = c(-30,-20,-10,0), right = FALSE))
x_upper <- as.character(cut(x, breaks = c(0,10,20,30), right = TRUE ))

然后将它们与ifelse组合(它们是互斥的,两组间隔覆盖整个范围,除了零,所以这应该没问题):

x_new <- ifelse(is.na(x_lower), ifelse(is.na(x_upper), "0", x_upper), x_lower)