R言語でのデータ操作基礎

ここではR言語の主要なデータ操作関数について説明します。特に、factor, cut, recode, summary, describe, table, そして levels に焦点を当てます。

ファクター

ファクターはカテゴリカルなデータを表すために使用されます。以下がその基本的な構文です。

factor(x = character(), levels, labels = levels,
       exclude = NA, ordered = is.ordered(x), nmax = NA)

# 有順序ファクターを作成する例
ordered_vector <- factor(c("低", "中", "高"), levels = c("低", "中", "高"), ordered = TRUE)

ファクターチェックや変換も可能です。

is.factor(x)        # xがファクターかどうかを確認
is.ordered(x)       # xが有順序ファクターかどうかを確認

as.factor(x)        # ベクトルをファクターに変換
as.ordered(x)       # ベクトルを有順序ファクターに変換

addNA(x, ifany = FALSE)  # ファクターにNAレベルを追加

区間分割 (cut)

数値データを区間に分割し、カテゴリカルなデータに変換します。

cut(x, breaks, labels = NULL, include.lowest = FALSE, right = TRUE, dig.lab = 3, ordered_result = FALSE)

# 例: 正規分布からのランダムサンプルを区切る
z <- rnorm(10000)
result <- cut(z, breaks = -6:6)
table(result)

あるいは、特定の年齢層に分ける場合:

data$age_group <- cut(data$age, breaks = c(-Inf, 20, 40, 60, Inf), 
                      labels = c("20歳未満", "20代~39歳", "40代~59歳", "60歳以上"))

値の置き換え (recode)

既存の値を新しい値に置き換えます。

recode(.x, ..., .default = NULL, .missing = NULL)

# 例: 性別をテキストで表現
data$gender <- recode(data$gender, "1" = "男性", "2" = "女性")

# カテゴリーを再定義
data$group <- recode(data$group, "1" = "グループA", "2" = "グループB", "3" = "その他")

要約統計 (summary)

データフレームやベクトルの要約情報を提供します。

summary(object)

# 例:
summary(USArrests)

結果は最小値、最大値、四分位数、平均などです。

詳細要約 (describe)

より詳細な統計情報が必要な場合に使用します。

describe(x, na.rm = TRUE, skew = TRUE, ranges = TRUE, trim = 0.1, type = 3, check = TRUE)

# 例:
describe(USArrests)

出力には中央値、歪度、尖度、範囲などが含まれます。

頻度表 (table)

クロス集計や頻度表を作成します。

table(..., exclude = if(useNA == "no") c(NA, NaN), useNA = c("no", "ifany", "always"))

# 例:
freq_table <- table(data$gender, data$age_group)
as.data.frame(freq_table)

レベル操作 (levels)

ファクターのレベルを取得・設定します。

levels(x) <- value

# 例:
x <- factor(c("赤", "青", "緑"))
levels(x) <- c("Red", "Blue", "Green")

さらに、複数のレベルを結合することも可能です。

z <- factor(c("リンゴ", "サラダ", "オレンジ"), levels = c("リンゴ", "サラダ", "オレンジ"))
levels(z) <- c("果物", "野菜", "果物")

これにより、元のレベルが新しいカテゴリにマッピングされます。

タグ: R DataManipulation StatisticalAnalysis

7月10日 19:21 投稿