我对R很新,我在创造因素方面遇到了一些麻烦。 我应该从数字变量创建一个因子。这个因素应该有三个级别:不满意(值0到4)和#34;既不是/也不是#34; (值5)"满意" (值6到10)。
lsat_factor<-factor(soep$lsat)
levels(lsat_factor)
levels(lsat_factor)[0:4] <- ("Dissatisfied")
levels(lsat_factor)[5]<-("Neither/nor")
levels(lsat_factor)[6:10]<-("Satisfied")
我尝试了这个,但绝对不行。提前谢谢,
答案 0 :(得分:5)
我可能只会使用cut
:
> x <- 0:10
> cut(x = x,breaks = c(0,4,5,10),include.lowest = TRUE,
labels = c('Dissatisfied','Either/Or','Satisfied'))
[1] Dissatisfied Dissatisfied Dissatisfied Dissatisfied Dissatisfied Either/Or Satisfied Satisfied
[9] Satisfied Satisfied Satisfied
Levels: Dissatisfied Either/Or Satisfied
答案 1 :(得分:0)
要折叠组,您可以使用levels<-
的列表语法。例如
# test data
soep <- data.frame(lsat = letters[1:10])
lsat_factor <- factor(soep$lsat)
table(lsat_factor)
# lsat_factor
# a b c d e f g h i j
# 1 1 1 1 1 1 1 1 1 1
levels(lsat_factor) <- list(
"Dissatisfied"=levels(lsat_factor)[1:4],
"Neither/nor" = levels(lsat_factor)[5],
"Satisfied" = levels(lsat_factor)[6:10]
)
table(lsat_factor)
# lsat_factor
# Dissatisfied Neither/nor Satisfied
# 4 1 5