Rで解析:名前付きの数値ベクトルから名前で値を計算したtableオブジェクトの作成方法

Rの解析に役に立つ記事
スポンサーリンク

お問い合わせよりご連絡いただいた、パッケージを使用せずに名前付きの数値ベクトルから名前で値を計算したtableオブジェクトの作成方法を紹介します。

なお、0を含む行は途中のコマンドで削除しています。実行コマンドが誰かのRの理解促進になればと思います。

windows 11のR version 4.4.1で確認しています。

スポンサーリンク

実行コマンド

コマンドや詳細はコメントやコマンドヘルプを確認してください。

# 名前付きの数値ベクトルの作成
TestData <- c(x = 1, b = 2, a = 2, 
              b = 3, c = 7, x = -1)

# もしくは_01
# TestData <- c(1, 2, 2, 3, 7, -1)
# names(x) <- c("x", "b", "a", "b", "c", "x")

# もしくは_02
# structureコマンドはclassを設定できます
# TestData <- structure(c(1, 2, 2, 3, 7, -1),
#                       names = c("x", "b", "a", "b", "c", "x"),
#                       class = c("numeric", "karada"))

# 内容を確認
TestData
# x  b  a  b  c  x 
# 1  2  2  3  7 -1

# 試しにtableコマンド
# 要素の数が示される,欲しいのは集計結果
table(TestData)
# TestData
# -1  1  2  3  7 
#  1  1  2  1  1 

# 集計:aggregateコマンド;結果はdeta.frameになる
# listを使うと列名の指定が可能です
# 処理はFUNオプションで指定します
Test_01 <- aggregate(list(V1 = as.integer(TestData)),
                     list(V2 = names(TestData)),
                     FUN = sum)

# 0を含む行を確認
#Zero_Row <- apply(Test, 1, function(n) all(n !=0))
# 0を含む行を削除
Test_02 <- Test_01[Test_01[2] != 0,]

### table化:完成 #####
# xtabsコマンドを使用します
(Test_03 <- xtabs(Test_02$V1 ~ Test_02$V2,
                  data = Test_02))
# Test_02$V2
# a b c 
# 2 5 7 

# classの確認
# class(Test_03)
# [1] "xtabs" "table"

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました