我有一个变量,我想在一个列联表中使用,所以我想将变量的(离散)值切换成二进制(或者更确切地说是间隔),然后我可以从一个总体中对我的数据进行排序成。但是,无论如何我无法在网上找到允许我以下列方式选择我的垃圾箱:
[-30, -20) [-20, -10) [-10, 0) 0 (0, 10] (10, 20] (20, 30]
即。我想要一些间隔保持开放和右边闭合,一些是相反的,而在中间零点是完全不同的类别。无论如何我能做到吗?我只想制表数据。
答案 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)