我试图对变量(var)中的类别进行重新组织,以使其为二进制。
现在,该变量包含11个类别0-10,您可以看到以下每个类别的值计数:
> 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。
在不创建新变量的情况下,最好的方法是什么?
发布于 2022-04-26 14:05:15
使用findInterval()的一个选择
x <- 0:10
y <- +(findInterval(x, c(3, 8)) == 1)
y
# [1] 0 0 0 1 1 1 1 1 0 0 0发布于 2022-04-26 14:24:35
我想您是在mydf中对mydf列进行分类。
受激数据
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
mydf2 <- mydf %>% mutate(var = if_else(var %in% 3:7, 1L, 0L))或在基R中
mydf2$var <- as.integer(mydf[["var"]] %in% 3:7)校验输出
var == 1的计数应该是89 + 99 + 85 + 96 + 92 = 461。
summary(factor(mydf2$var))
0 1
539 461 https://stackoverflow.com/questions/72015228
复制相似问题