2012-04-19 16 views
4

上記と同じです。データフレームは、時代遅れの一連の整数です。私はそれらを序数変数に変換しようとしています。コードは以下の通りです。範囲内の数値を係数で置換する

df <- read.table("http://dl.dropbox.com/u/822467/df.csv", header = TRUE, sep = ",") 
df[(df >= 0) & (df <= 14)] <- "Age1" 
df[(df >= 15) & (df <= 44)] <- "Age2" 
df[(df >= 45) & (df <= 64)] <- "Age3" 
df[(df > 64)] <- "Age4" 
table(df) 

わかりましたように、これはうまくいきません。誰かがこれを行うためのより良い方法を提案するのを助けることができますか?

答えて

12

使用cutワンステップでこれを行うには:あなたがbreaksが正しく指定されている、あなたがしても、レベルを再ラベル付けするlabels引数を使用できることを確認したら

dfc <- cut(df$x, breaks=c(0, 15, 45, 56, Inf)) 
str(dfc) 
Factor w/ 4 levels "(0,15]","(15,45]",..: 3 4 3 2 2 4 2 2 4 4 ... 

dfc <- cut(df$x, breaks=c(0, 15, 45, 56, Inf), labels=paste("Age", 1:4, sep="")) 
str(dfc) 
Factor w/ 4 levels "Age1","Age2",..: 3 4 3 2 2 4 2 2 4 4 ... 
+0

ありがとう、それは動作します。もともとやっていたことが間違っていたことを知っていますか? – JackeJR

+2

@RJ - 「c(65,99,100,104、 "Age3"、 "Age2")> 64'、何がうまくいかなかったかを調べるためにこれを試してください。 –

+0

順序付けられた要素(OPで言及されています)を取得するには、 'ordered_result = TRUE'を' cut() 'に含めます。 – BenBarnes

関連する問題