2

私の質問は、データ フレームにベクトルの順序を課しながら、文字ベクトルに基づいて列名の名前を変更する方法です。同様の投稿をすべて読みましたが、私の質問には回答しません。

私はそのようなデータフレームに取り組んでいます:

df<- data.frame(q3= c(1,4,6,1), q12=c(5,3,2,4), q11=c(1,2,3,4), q1=c(5,6,4,5),q5= c(1,4,6,1), q9=c(5,3,2,4), q10=c(1,2,3,4), q4=c(5,6,4,5),q2= c(1,4,6,1), q7=c(5,3,2,4), q6=c(1,2,3,4), q8=c(5,6,4,5))

理想的には、これらの列をインデックス、つまり q1、q3、q78、q99 に基づいて並べ替えたいと思います。しかし、これは難しそうです。

運が良ければ、並べ替えられた列名を含むベクトルもあります。

cols<- c("q1", "q2", "q3", "q4","q5", "q6", "q7", "q8","q9", "q10", "q11", "q12")

データ フレームの列名を に置き換えるのは、cols順序が異なるため明らかに正しくありません。これまでに到達した場所は次のとおりです。

colnames(df) <- match(colnames(df), cols)

df <- df[,order(names(df))]

これは、後者が列にある位置に置き換えますが、colnames(df)これらの数値はRによって整数として認識されないため、これらの数値を順序付けることはできません(Rは数値を変数の名前にすることを許可していないため)。そうすることができれば、df は cols と同じ順序になり、列名を置き換えるだけです。

どうすればこれを機能させることができますか?不可能な場合、代替手段は何ですか?

前もって感謝します。

4

1 に答える 1

2

colsデータ フレームの列を並べ替えるために使用できます。

df[,cols]

これは基本的に order を使用しcolsてデータ フレームを並べ替えます。これは次のように見ることができます。

df[,c("B","A")]
df[,c("A","B")] 

という名前のベクトルがあり、それを または のいずれかcolsに設定した場合、この「トリック」を使用して列を並べ替えることができます。c("A","B")c("B","A")

于 2019-05-16T12:43:12.360 に答える