我有一个包含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
的一个标签。
感谢任何帮助!
答案 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