我有一个包含40+列的数据框。我想做一些我认为cut可以做的非常简单的事情:将我所有的值更改为2个因子,那些<10和那些>10对于列3:38来说是"0“或"1”。我尝试使用cut,但得到错误:
'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。
如有任何帮助,我们不胜感激!
发布于 2014-07-24 21:38:26
您可以尝试:
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 12https://stackoverflow.com/questions/24934883
复制相似问题