根据R中多列的值将连续变量分为2个因子

时间:2014-07-24 13:19:25

标签: r cut

我有一个包含40多列的数据框。我想做一些我认为可以做的非常简单的事情:将我的所有值改为2个因子,其中< 10和那些> 10为" 0"或" 1"列3:38。我尝试使用剪切,但是我收到了错误:

'data.frame':   182 obs. of  38 variables:
 $ col_names                           : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Case_control                        : Factor w/ 2 levels "0","1": 2 1 1 2 2 2 2 2 2 2 ...
 $ Sample_1_fung               : int  0 0 5 0 0 0 0 0 0 0 ...

我试过

test_cat <- lapply(qpcr180_df[,3:38],cut, breaks=2,by=10, quantile=F)
Error in cut.default(X[[20L]], ...) : 'breaks' are not unique
> 

和:当我做test_cat <- lapply(qpcr180_df[,3:38],cut, breaks=2*(-1:9), quantile=F, labels=2*(0:9))

我得到的表格中标有但是来自2-12和NA的因子,而不是<10的一个标签和>10的一个标签。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

你可以尝试:

set.seed(42)
dat1 <- as.data.frame(matrix(sample(1:20,5*4, replace=TRUE), ncol=5))
dat2 <- dat1
dat2[] <- cut(as.matrix(dat1),breaks=c(-Inf,10,Inf),labels=c('0','1'))
dat2
#   V1 V2 V3 V4 V5
#1  1  1  1  1  1
#2  1  1  1  0  0
#3  0  1  0  0  0
#4  1  0  1  1  1

dat1
#  V1 V2 V3 V4 V5
#1 19 13 14 19 20
#2 19 11 15  6  3
#3  6 15 10 10 10
#4 17  3 15 19 12