本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:解析データを再現するSPSSシンタックスを作成!「descr」パッケージの紹介

記述統計はデータをまとめ、統計量を計算し傾向や性質を理解する重要な作業です。記述統計にはデータをまとめる多くの手法がありますが、まずはデータの出現数(分布)を把握することが重要かと思います。分布を把握することでデータの入力ミス等に気がつくこともあります。

しかし、市販の統計ソフトなどでデータの分布を把握する操作はやや煩雑で、目的にあった出力を得るためにSPSSなどではシンタックスを作成することもあります。その点、Rは自由度が高いので解析作業が非常に楽です。

これら作業を軽減できるかもしれない「descr」パッケージの紹介します。本パッケージではデータの分布をクロステーブル、グラフで表示するだけでなく、「Rで処理したデータをSPSSで再現しSPSSフォーマットで保存する」シンタックスを出力するコマンドが収録されています。本パッケージの最大の特徴かと思います。

まだまだ、大学では論文投稿などの関係からSPSSを利用されている方が多いと思います。RからSPSSへのデータ移行が楽になります。ぜひ、パッケージのコマンドを活用ください。

なお、Rで作成した20*30000のデータをシンタックスで再現することが出来ました。ただし、シンタックスを利用する際には「データが記述されたテキストファイルの保存場所」に注意してください。正しい場所にテキストファイルを保存しないとエラーになります。正しい保存場所はSPSSのエラーを確認してください。また、データラベルには日本語も使用可能です。日本語が含まれている場合はダブルクリックでシンタックスファイルを開くのではなく、SPSSのメニューよりファイル、シンタックス、エンコードにUTF-8を選択してください。

パッケージのバージョンは1.1.5。実行コマンドはwindows 11のR version 4.1.2で確認しています。

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("descr")
スポンサーリンク

実行コマンドの紹介

詳細はコマンドまたはパッケージヘルプを確認してください。

#パッケージの読み込み
library("descr")

#####準備#####################
#データ例の作成
set.seed(12345)
TestData <- data.frame(Data1 = sample(paste0("Group", 1:2), 40, replace = TRUE),
                       Data2 = sample(paste0("Group", 1:2), 40, replace = TRUE))
##############################

#データフレームの内容を再現するspssシンタックスとRコマンド,データ内容を
#作業フォルダに出力:data.frame2txtコマンド
#SPSSでspssシンタックスを実行する際は「datafile = "TestData.txt"」の
#保存場所に注意してください,出力されるspssシンタックスは「/FILE='TestData.txt'」です
#各オプションは保存ファイル名の指定に使用します
data.frame2txt(TestData, datafile = "TestData.txt", r.codefile = "TestData.R",
               sps.codefile = "TestData.sps", df.name = "TestData")

#データをクロステーブルに集計:CrossTableコマンド
#出力される表内の数字はCell Contentsを参照してください
PlotCT <- CrossTable(TestData[, 1], TestData[, 2], drop.levels = TRUE, 
                     dnn = c(colnames(TestData[1]), colnames(TestData[2])))
#出現数をグラフで表示
plot(PlotCT)
#出現数をテーブルで表示
PlotCT

#Cell Contents 
#|-------------------------|
#|                       N | 
#| Chi-square contribution | 
#|           N / Row Total | 
#|           N / Col Total | 
#|         N / Table Total | 
#|-------------------------|
#=================================
#Data2
#Data1       Group1   Group2   Total
#---------------------------------
#  Group1         6        6      12
#             0.117    0.159         
#             0.500    0.500   0.300
#             0.261    0.353        
#             0.150    0.150        
#---------------------------------
#  Group2        17       11      28
#             0.050    0.068        
#             0.607    0.393   0.700
#             0.739    0.647        
#             0.425    0.275         
#---------------------------------
#  Total         23       17      40
#             0.575    0.425         
#=================================

#データの要約を表示:descrコマンド
descr(TestData)
Data1
Length     Class      Mode 
40 character character 

Data2
Length     Class      Mode 
40 character character 

#データの出現率を表示:freqコマンド
#グラフも合わせて出力されます
freq(TestData[, 1], y.axis = "percent")
#TestData[, 1] 
#       Frequency Percent
#Group1        12      30
#Group2        28      70
#Total         40     100

出力例

・CrossTableコマンド

CrossTable

・freqコマンド

freq

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

このコードの続きをAIに聞く

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.