web-dev-qa-db-ja.com

dply:Rでアルファベット順に列を並べます

異なるcol_namesがアルファベット順にランダムに分散された大きなDF(数百および数百)列がある場合:

df.x <- data.frame(2:11, 1:10, rnorm(10))
colnames(df.x) <- c("ID", "string", "delta")

すべてのデータを(垂直に)col_nameでアルファベット順に並べるにはどうすればよいですか?

基本的に、数百のCSV(sep = "|")テキストファイルがあり、それらの列を単一のdfに読み取り、それらの列をアルファベット順に並べ、次に他のdplyf関数を使用して最終結果を取得する必要があります。列をアルファベット順に並べる方法を除き、このすべてを把握しました。列をアルファベット順(上下)に並べ替えるのではなく、col_namesとそれに対応するデータの実際の垂直方向を並べ替えます。 Excelのデータ列全体の切り取りと貼り付けに似ています。

たとえば、私はこのアプローチをレビューしましたが、これは行をアルファベット順に「ソート」するもので、これは私がやろうとしていることではありません。

列でデータフレームをソートする方法?

ありがとう!

29
Zach

これを試して

df %>% select(noquote(order(colnames(df))))

あるいは単に

df[,order(colnames(df))]
29
Koundy

Dplyrでこれを行う別の方法は次のとおりです。

_iris %>% 
  select(sort(current_vars()))
_

current_vars()はソート可能な列名を返し、select()は列名のベクトルを取ります。

19
Steph Locke