[英]R reassign / assign values to a level of a factor?
Given a vector v <- seq(0,23)
. 给定向量
v <- seq(0,23)
。 I want to convert it to a factor with the following levels: 我想将其转换为以下级别的因子:
0 = All numbers from 0 to 4
1 = All numbers from 5 to 8
2 = Numbers 9, 11, 23
3 = Others
Please guide me how can I do this? 请指导我该怎么做? I have done
factor(v, levels = as.character(seq(0,23)))
. 我已经完成了
factor(v, levels = as.character(seq(0,23)))
。 Then 然后
levels(v[levels(v) %in% as.character(seq(0,4))] <- "0"
levels(v[levels(v) %in% as.character(seq(5,8))] <- "1"
levels(v[levels(v) %in% as.character(c(9,11,23)] <- "2"
A couple of options 几个选择
v <- 0:23
v <- factor(v)
levels(v) <-
list("0 - 4" = 0:4,
"5 - 8" = 5:8,
"9, 11, 23" = c(9, 11, 23),
"Others" = levels(v)[!levels(v) %in% c(0:9, 11, 23)])
forcats
package (tidyverse paradigm) forcats
软件包(tidyverse范例) library(magrittr)
library(forcats)
v <- 0:23 %>%
factor() %>%
fct_collapse("0 - 4" = as.character(0:4),
"5 - 8" = as.character(5:8),
"9, 11, 23" = as.character(c("9", "11", "23"))) %>%
fct_other(keep = c("0 - 4", "5 - 8", "9, 11, 23"),
other_level = "Others")
A different Base R solution 不同的Base R解决方案
v <- 0:23
v <- factor(ifelse(v <= 4, "0",
ifelse(v > 4 & v <= 8, "1",
ifelse(v %in% c(9,11,23), "2", "3"))))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.