首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重组变量

重组变量
EN

Stack Overflow用户
提问于 2022-04-26 13:55:57
回答 2查看 52关注 0票数 0

我试图对变量(var)中的类别进行重新组织,以使其为二进制。

现在,该变量包含11个类别0-10,您可以看到以下每个类别的值计数:

代码语言:javascript
复制
> table(mydf$var)
0    1    2    3    4    5    6    7    8    9   10  
61   59  111  259  277  959  280  259  151   28   53

我希望将这两个极值组合在一起,使值0-2和8-9 =0,值3-7 =1。

在不创建新变量的情况下,最好的方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2022-04-26 14:05:15

使用findInterval()的一个选择

代码语言:javascript
复制
x <- 0:10
y <- +(findInterval(x, c(3, 8)) == 1)

y
# [1] 0 0 0 1 1 1 1 1 0 0 0
票数 1
EN

Stack Overflow用户

发布于 2022-04-26 14:24:35

我想您是在mydf中对mydf列进行分类。

受激数据

代码语言:javascript
复制
library(dplyr)

set.seed(12)
mydf <- data.frame(var = sample(0:10, 1000, replace = T))
summary(factor(mydf$var))
 0  1  2  3  4  5  6  7  8  9 10 
87 99 87 89 99 85 96 92 99 81 86 

mutate重组var

代码语言:javascript
复制
mydf2 <- mydf %>% mutate(var = if_else(var %in% 3:7, 1L, 0L))

或在基R中

代码语言:javascript
复制
mydf2$var <- as.integer(mydf[["var"]] %in% 3:7)

校验输出

var == 1的计数应该是89 + 99 + 85 + 96 + 92 = 461

代码语言:javascript
复制
summary(factor(mydf2$var))
  0   1 
539 461 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72015228

复制
相关文章

相似问题

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