以下のような入力例をNumbersで作成し、CSVファイルとして保存した。
library(readr)
ex01 <- read_csv("data/ex01.csv",show_col_types = FALSE)
## New names:
## • `` -> `...1`
## • `` -> `...6`
## • `` -> `...7`
ex01
ex01 <- as.data.frame(ex01)
ex01 <- ex01[,1:5]
colnames(ex01)[1] <- "ID"
ex01
R専用のデータファイルにしておく場合。次のスクリプトを1回実行する。
saveRDS(ex01,file = "data/ex01.RDS")
次からは以下のスクリプトでデータを読み込み、任意の名前を付けて使用する。
data <- readRDS("data/ex01.RDS")
# 単純集計とクロス集計
table(data$Q03_1)
##
## 1 2 3
## 3 5 4
table(data$Q03_2)
##
## 1 2 3
## 2 5 5
table(data$Q03_1,data$Q03_2) # Q03_1 by Q03_2
##
## 1 2 3
## 1 1 2 0
## 2 1 2 2
## 3 0 1 3
# クロス表の作成
t01 <- table(data$Q03_1,data$Q03_2)
addmargins(t01) # 周辺度数を計算してみる。
##
## 1 2 3 Sum
## 1 1 2 0 3
## 2 1 2 2 5
## 3 0 1 3 4
## Sum 2 5 5 12
# 行がQ03_1、列がQ03_2であることを確認。
rownames(t01) <- list("A1","A2","A3")
colnames(t01) <- list("B1","B2","B3")
prop.table(t01,2) # 2は列方向を指定する
##
## B1 B2 B3
## A1 0.5 0.4 0.0
## A2 0.5 0.4 0.4
## A3 0.0 0.2 0.6
round(prop.table(t01,2)*100) # 列パーセントの計算
##
## B1 B2 B3
## A1 50 40 0
## A2 50 40 40
## A3 0 20 60
round(prop.table(t01,1)*100) # 行パーセントの計算
##
## B1 B2 B3
## A1 33 67 0
## A2 20 40 40
## A3 0 25 75
t(t01) # 行列を転置(transpose)
##
## A1 A2 A3
## B1 1 1 0
## B2 2 2 1
## B3 0 2 3
round(prop.table(t(t01),1)*100) # 転置した行列の行パーセント
##
## A1 A2 A3
## B1 50 50 0
## B2 40 40 20
## B3 0 40 60
par(pty="s")
mosaicplot(t01)
mosaicplot(t(t01))
mosaicplot(t01,dir = c("h","v"))