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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- sort()によるベクトルの並べ替え
- 柔軟な並べ替えのためのorder()
- rank()による値の順位付け
- 列によるデータフレームの並べ替え