0
labs = letters[3:7]
vec = rep(1:5,2)
"c" "d" "e" "f" "g"の因子を得るにはどうすればよいですか?R数値を事前定義ラベル付きファクターに変換する方法
labs = letters[3:7]
vec = rep(1:5,2)
"c" "d" "e" "f" "g"の因子を得るにはどうすればよいですか?R数値を事前定義ラベル付きファクターに変換する方法
あなたはこのような何かを行うことができます。結果の一貫性を保つためになるように
labs = letters[3:7]
vec = rep(1:5,2)
factorVec <- factor(x=vec, levels=sort(unique(vec)), labels = c("c", "d", "e", "f", "g"))
私は、unique(vec)
をソートしています。 unique()
は、要素の最初のオカレンスに基づいて一意の値を返します。順序を指定することにより、コードはより堅牢になります。
また、レベルとラベルの両方を指定することで、コードが読みやすくなると思います。
EDIT
あなたが?factor
を使用してドキュメントを見ると、あなたが見つける:xは取ったかもしれないことを(文字列など)の値の
レベル
オプションのベクトルを。デフォルトは、as.character(x)で取られた固有の値の集合で、xの昇順にソートされます。この集合はsort(unique(x))より小さいと指定できることに注意してください。
したがって、ファクターファクション自体の中にはソートがいくつかあることに注意してください。しかし、コードを読みやすくするために、レベル情報を追加するべきだと私は思っています。
hmm ...「factor(vec、labels = labs)」はどうですか? –
レベルが指定されていない場合、どの要素がラボの元のベクトルのどの要素に割り当てられているかはわかりません。私の仕事では、私はこのエラーを犯し、赤い手で捕まえられた後、賢明になりました。 –
クマール、助けてくれてありがとう。私は 'レベル'と 'ラベル'の両方を見れば、私はこの基本的な質問を最初に聞かせてくれる混乱を免れたはずだと思うが、David Arenburgの解答で(驚くべきことに?)ラベルは、一意の値の最初の出現がソートされないように 'vec'を台無しにしても。 – Amitai