1

csvファイルを読み取るためread.csvのパラメーターとともに関数を使用しています。colClasses私が達成したいのは、colClasses「要因」であるすべてについて、要因の順序を指定したいということです.ie

列「液体タイプ」に次の要因がある場合:-「水」、「ジュース」、「ソーダ」、「アルコール」、要因の順序を制御したい.言う

Water = 3
Juice=1
Soda=2
Alcohol =0 

では、どうすれば因子の順序を制御できread.csvますか?

編集:以下のコメント、フォーマット:

setClass("customFactor") 
setAs("character", "customFactor", function(from) {SpecifyOrders(from)}) 
SpecifyOrders <- function(from) { 
       from<- factor(from, levels=c(new_order)) }  
4

2 に答える 2

2

1つの質問は「なぜ?」です。その他の関連する質問: 因子のレベルを変更したいだけですか?それとも順序付けられた因子が本当に必要ですか?それとも数値に再コード化したいですか?

その順序でレベルを変更するには、データ入力後に次のようにします。

Liquid.type <- factor(Liquid.type, levels=c("Alcohol","Juice","Soda","Water"))

(ただし、デフォルトの順序はアルファソートであるため、それはすでに順序になっています。)その要素から0〜3の値を取得したい場合:

Liquid.type <- as.numeric(Liquid.type) -1

read.table または read.csv の時点でこれを行う方法がありますが、それらはややバロックで複雑であり、その努力を正当化するためにユースケースを確認する必要があります。

于 2013-09-18T19:33:19.157 に答える
1

だから私は答えを考え出したと思う...

setClass("customFactor") 
setAs("character","customFactor", function(from){ SpecifyOrders(from) } ) 
SpecifyOrders <- function(from) { from<- factor(from, levels=c(new_order)) }

Dataframe <- read.csv(data=data, colClasses=c("character","customFactor","numeric"))
于 2013-09-18T20:57:32.967 に答える