首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据R中多列的值将连续变量转化为2个因子

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

Stack Overflow用户
提问于 2014-07-24 21:19:25
回答 1查看 51关注 0票数 0

我有一个包含40+列的数据框。我想做一些我认为cut可以做的非常简单的事情:将我所有的值更改为2个因子,那些<10和那些>10对于列3:38来说是"0“或"1”。我尝试使用cut,但得到错误:

代码语言:javascript
复制
'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 ...

我试过了

代码语言:javascript
复制
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

如有任何帮助,我们不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2014-07-24 21:38:26

您可以尝试:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24934883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档