2016-11-30 17 views
0

私はRにはかなり新しいので、因子を作成する際にいくつか問題があります。 数値変数から因子を作成する必要があります。この要素には3つのレベルがある必要があります。不満足な値(0〜4の値)「どちらもない/もらない」(値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") 

私はこれを試しましたが、間違いなく動作しています。事前のおかげで、

答えて

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 
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 
+0

おかげでたくさん:) –

+0

私もちょうど2つのレベルの要因を作成したい場合は、年齢18歳未満のsoepの$時代のrespondantsを識別し、「歳」二つのレベルを持つと」大人 "それを行うための最善の方法は何ですか? –

+0

それは別の質問のようです。元のデータはカテゴリ別に表示されていました。私はこの新しい年齢の値が数値だと思いますか?あなたは2つのカテゴリしか持たないなら、簡単な 'ifelse()'を使うことができます。あるいは、 'cut()'をもっと使うことができます。しかし、それらは数値を仮定します。 – MrFlick

関連する問題