从数字变量创建因子

时间:2016-11-30 21:51:54

标签: r

我对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")

我尝试了这个,但绝对不行。提前谢谢,

2 个答案:

答案 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