问题描述
dat$Gender 是包含 m's、M's、f's 和 F's 向量的数据。我正在尝试修改变量“性别”,以便使用因子将大写字母更改为小写。
[1] m m m f m M f m m f m f f m m m f m m F f m f f m M M f m f f m m m m f f m M m f m m m f f M
[48] M m m m f f f m f m m m f f f f M f m f f M m m m F m m f M M M f m M M m m f f f m m f m F f
[95] m m F m M M
Levels: f F m M
dat$Gender
data_Gender<- factor(dat$Gender,levels=c("m","M","f","F"),labels= c("m","m","f"))
data_Gender
[1] m m m f m <NA> f m m f m f f m m m f m m
[20] <NA> f m f f m <NA> <NA> f m f f m m m m f f m
[39] <NA> m f m m m f f <NA> <NA> m m m f f f m f m
[58] m m f f f f <NA> f m f f <NA> m m m <NA> m m f
[77] <NA> <NA> <NA> f m <NA> <NA> m m f f f m m f m <NA> f m
[96] m <NA> m <NA> <NA>
Levels: m < f
解决方法
您可以像这样直接编辑级别:(IQueryable).where(b=>(((fliter | b.BlogStatus) & (2147483647-(fliter & b.BlogStatus))&mask)) == 0);
// ~x == 2147483647-x
。 levels(x) <- tolower(levels(x))
必须是字符向量,而不是列表。
这种重新调平可以通过 forcats::fct_collapse
实现。但是,正如已经提到的,还有其他更好/更简单的方法可以做到这一点。
dat <- data.frame(Gender = c('M','F','M','f','m'))
dat$Gender <- forcats::fct_collapse(dat$Gender,'M' = c('M','m'),'F' = c('F','f'))
dat
# Gender
#1 M
#2 F
#3 M
#4 F
#5 M