0Pricing
R Academy · レッスン

sort()によるベクトルの並べ替え

数値ベクトルや文字ベクトルを昇順または降順に並べ替えます。

「sort()によるベクトルの並べ替え」はCoddyKit上の無料R Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはR Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 R Academyコースには全4レッスンが含まれています。

sort() は何をするか

sort()関数は、デフォルトでベクトルの要素を昇順に並べます。numeric、character、logical のベクトルに対応しており、元のベクトルを変更せず、新しくソート済みのベクトルを返します。

scores <- c(42, 7, 95, 13, 67, 31)
sorted_scores <- sort(scores)
print(sorted_scores)

降順でのソート

sort()にdecreasing = TRUEを渡すと、順序を反転できます。リーダーボードのスコアや売上金額など、結果を高い順に並べて順位付けするときに便利です。

prices <- c(19.99, 5.49, 89.00, 34.50, 12.75)
sort(prices, decreasing = TRUE)

Character ベクトルのソート

Character ベクトルは辞書順(アルファベット順)にソートされます。Rは並び順の決定にシステムのロケールを使用するため、ロケールの設定によっては大文字が小文字より前に並ぶことがあります。

fruits <- c('banana', 'Apple', 'cherry', 'apricot', 'Blueberry')
sort(fruits)

大文字と小文字を区別するソート

ほとんどのロケールでは、大文字が小文字より前に並びます。大文字と小文字を区別せずにソートするには、ソート前にtolower()またはtoupper()を使って同じ文字種に変換してください。

words <- c('Zebra', 'apple', 'Mango', 'banana')
# Case-sensitive (uppercase first)
sort(words)
# Case-insensitive approach
words[order(tolower(words))]

na.last による NA 値の処理

デフォルトでは、sort()はNA値を削除します。na.last = TRUEを使うとNAを末尾に、na.last = FALSEを使うと先頭に配置できます。これにより、結果内で欠損値を置く位置を制御できます。

data <- c(5, NA, 2, NA, 8, 1)
# Default: NAs removed
sort(data)
# NAs at end
sort(data, na.last = TRUE)
# NAs at beginning
sort(data, na.last = FALSE)

Logical ベクトルのソート

logical ベクトルを昇順にソートすると、FALSE(0)がTRUE(1)より前に並びます。TRUE/FALSEの値をまとめてグループ化したい場合に便利です。

flags <- c(TRUE, FALSE, TRUE, FALSE, FALSE, TRUE)
sort(flags)
sort(flags, decreasing = TRUE)

sort() はベクトルの型を保持する

sort()は常に入力と同じ型のベクトルを返します。integer をソートすると integer、double をソートすると double、character をソートすると character が返されます。class 属性も保持されます。

int_vec <- c(5L, 2L, 8L, 1L, 4L)
result <- sort(int_vec)
print(result)
print(class(result))
print(typeof(result))

integer のソートに使う sort.int()

sort.int()は、integer または double のベクトルをソートするための低レベル関数です。sort()と同じ引数を受け取りますが、メソッドディスパッチに伴う処理の一部を省略するため、大きな数値ベクトルではわずかに高速です。

big_vec <- c(100L, 3L, 77L, 22L, 55L, 9L)
# sort.int works like sort for numeric/integer vectors
result <- sort.int(big_vec, decreasing = FALSE)
print(result)

元のベクトルは変更されない

sort()の重要な特性は、元のベクトルを変更しないことです。新しいソート済みベクトルを返すため、ソート後の順序を保持したい場合は、結果を代入する必要があります。

temps <- c(22.5, 18.0, 30.1, 15.3, 27.8)
sorted_temps <- sort(temps)
cat('Original:', temps, '\n')
cat('Sorted:  ', sorted_temps, '\n')

ソートとインデックス指定の組み合わせ

ソート済みの値と元の位置の両方が必要になることがあります。その場合はsort()とwhich()を組み合わせるか、次のレッスンで扱うorder()を使って、ソート済みの値とともに元のインデックスを取得します。

exam_scores <- c(78, 92, 65, 88, 71)
sorted <- sort(exam_scores)
cat('Sorted scores:', sorted, '\n')
# Find what rank each original score gets
ranks <- rank(exam_scores)
cat('Rank of each student:', ranks, '\n')

sort() の実用的なパターン

よく使うパターンとして、ベクトルから一意な値を取り出してソートしたり、sort()とhead()またはtail()を組み合わせて上位N個の値を取得したりする方法があります。

sales <- c(120, 340, 95, 210, 340, 180, 95, 420)
# Unique values in order
sort(unique(sales))
# Top 3 largest
tail(sort(sales), 3)
# Bottom 3 smallest
head(sort(sales), 3)

確認問題

sort()を使うとき、NA値を先頭、末尾に置くか、削除するかを制御する引数はどれですか?

sort() の重要ポイント

sort() の重要なポイント:

  • 昇順にはsort(x)、降順にはsort(x, decreasing=TRUE)を使用します
  • Character ベクトルはアルファベット順にソートされ、デフォルトでは大文字と小文字が区別されます
  • na.last = TRUE/FALSE/NAでNAの配置を制御します
  • sort()は元のベクトルを変更せず、常に新しいベクトルを返します
  • tail(sort(x), n)またはhead(sort(x), n)で上位N個または下位N個の値を取得します
  • sort.int()はnumericまたはintegerベクトル向けの高速なバリエーションです
x <- c(3, 1, NA, 5, 2, NA, 4)
cat('Ascending (no NAs):', sort(x), '\n')
cat('Descending (NAs last):', sort(x, decreasing = TRUE, na.last = TRUE), '\n')

よくある質問

「sort()によるベクトルの並べ替え」レッスンは無料ですか?

はい。「sort()によるベクトルの並べ替え」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、R Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 R Academyコースには全4レッスンが含まれています。

「sort()によるベクトルの並べ替え」で何を学びますか?

数値ベクトルや文字ベクトルを昇順または降順に並べ替えます。 ブラウザで直接実行するハンズオンコードでR Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

R Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのR Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「sort()によるベクトルの並べ替え」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このR Academyレッスンでコードを書いて実行できますか?

はい。すべてのR Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. sort()によるベクトルの並べ替え
  2. 柔軟な並べ替えのためのorder()
  3. rank()による値の順位付け
  4. 列によるデータフレームの並べ替え
← R Academyに戻る