×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
いまさらながら…
1,2,3,4,5のいずれか、という感じで反応が分かっているとき
# データの用意
## 60項目の質問紙に200人が答えた、という仮想データ
dat <- data.frame(matrix(data=sample(x=5, size=12000, replace=T), nrow=200, ncol=60))
dat[,61] <- sample(x=c(6,8,NA,NaN,Inf), size=200, replace=T) ## 変なデータをつけてみる
# table関数を利用するやりかた。マジお勧め。NAとかもわかる
#datx <- factor(as.table(as.matrix(dat))) # データフレームを行列にしてtableにしてfactorにする
summary(factor(as.matrix(dat))) # 集計。as.tableはいらない
## NaNの数がわからない。Rjpwikiの記事のときとは使用が変わったようだ
sum(sapply(dat, is.nan)) # これで調べる。使わんと思うけど
# プロットして調べる
plot(as.vector(as.matrix(dat))) # 行列にしてベクトルにしてプロット。これが一番楽かも
## どのへんのデータから表示する。これはExcelの方が楽かも
sapply(dat, function(x) which(x==6))
# 他のやりかた1
sapply(dat, table, exclude=NULL)
# 他のやりかた2
cdat <- na.omit(dat)
cdat[cdat!=5&cdat!=4&cdat!=3&cdat!=2&cdat!=1]
1,2,3,4,5のいずれか、という感じで反応が分かっているとき
# データの用意
## 60項目の質問紙に200人が答えた、という仮想データ
dat <- data.frame(matrix(data=sample(x=5, size=12000, replace=T), nrow=200, ncol=60))
dat[,61] <- sample(x=c(6,8,NA,NaN,Inf), size=200, replace=T) ## 変なデータをつけてみる
# table関数を利用するやりかた。マジお勧め。NAとかもわかる
summary(factor(as.matrix(dat))) # 集計。as.tableはいらない
## NaNの数がわからない。Rjpwikiの記事のときとは使用が変わったようだ
sum(sapply(dat, is.nan)) # これで調べる。使わんと思うけど
# プロットして調べる
plot(as.vector(as.matrix(dat))) # 行列にしてベクトルにしてプロット。これが一番楽かも
## どのへんのデータから表示する。これはExcelの方が楽かも
sapply(dat, function(x) which(x==6))
# 他のやりかた1
sapply(dat, table, exclude=NULL)
# 他のやりかた2
cdat <- na.omit(dat)
cdat[cdat!=5&cdat!=4&cdat!=3&cdat!=2&cdat!=1]
PR
今までイマイチよくわからなかったデータの並べ替え
dat <- data.frame(a=factor(c("a1", "a1", "a1", "a1", "a1", "a2", "a2", "a2", "a2", "a2")), s=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), b1=c(3, 3, 1, 3, 5, 3, 5, 2, 4, 6), b2=c(4, 3, 4, 5, 7, 2, 6, 3, 6, 4), b3=c(6, 6, 6, 4, 8, 3, 2, 3, 6, 5), b4=c(5, 7, 8, 7, 9, 2, 3, 3, 4, 6))
# データフレームの中身
これをb1で並べ替える
class(dat$b1) # 型の確認。文字列では並べ替えできない
odr <- order(dat$b1) # odrというオブジェクトに、並べ替えの"行番号"が保存される
odr
[1] 3 8 1 2 4 6 9 5 7 10
dat2 <- dat[odr,] # odrに保存された行のデータを取り出す。3行目のデータ、8行目のデータ…という感じ
## 型を確認しておく。数値がfactorだったら数値になおす
x <- factor(1:10)
x
class(x)
y <- as.numeric(as.character(x)) # as.numeric(x)だとfactorのlevelが適用されてしまうので
class(y)
dat <- data.frame(a=factor(c("a1", "a1", "a1", "a1", "a1", "a2", "a2", "a2", "a2", "a2")), s=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), b1=c(3, 3, 1, 3, 5, 3, 5, 2, 4, 6), b2=c(4, 3, 4, 5, 7, 2, 6, 3, 6, 4), b3=c(6, 6, 6, 4, 8, 3, 2, 3, 6, 5), b4=c(5, 7, 8, 7, 9, 2, 3, 3, 4, 6))
# データフレームの中身
a | s | b1 | b2 | b3 | b4 |
a1 | 1 | 3 | 4 | 6 | 5 |
a1 | 2 | 3 | 3 | 6 | 7 |
a1 | 3 | 1 | 4 | 6 | 8 |
a1 | 4 | 3 | 5 | 4 | 7 |
a1 | 5 | 5 | 7 | 8 | 9 |
a2 | 6 | 3 | 2 | 3 | 2 |
a2 | 7 | 5 | 6 | 2 | 3 |
a2 | 8 | 2 | 3 | 3 | 3 |
a2 | 9 | 4 | 6 | 6 | 4 |
a2 | 10 | 6 | 4 | 5 | 6 |
これをb1で並べ替える
class(dat$b1) # 型の確認。文字列では並べ替えできない
odr <- order(dat$b1) # odrというオブジェクトに、並べ替えの"行番号"が保存される
odr
[1] 3 8 1 2 4 6 9 5 7 10
dat2 <- dat[odr,] # odrに保存された行のデータを取り出す。3行目のデータ、8行目のデータ…という感じ
## 型を確認しておく。数値がfactorだったら数値になおす
x <- factor(1:10)
x
class(x)
y <- as.numeric(as.character(x)) # as.numeric(x)だとfactorのlevelが適用されてしまうので
class(y)
データファイルで個人ごとの代表値などをまとめる
tapply, by等も試したが、たぶんaggregate関数が一番便利
dat <- read.table("https://blog.cnobi.jp/v1/blog/user/89d80905c7038b4121822249e9062fba/1261414199", header = T)
dat # データファイル。
summary(dat)
ag.dat <- aggregate(x=dat[5:6], by=list(dat[,1],dat[,2], dat[,3], dat[,4]), FUN=mean)
ag.dat # 個人別に条件ごとのrtの平均値をだす
## tapplyはINDEXの3番目からリスト要素になる。tapplyはデータに2列指定できない
tapply(X=dat[,5], INDEX=list(dat[,1], dat[,2], dat[,3],dat[,4]), FUN=mean)
# 分析しやすいようにreshapeパッケージのcast関数で横長にする
library(reshape)
pn <- substr(ag.dat[,2], 1, 3) # 横長データセットの変数名をつくるため、substrで一部をとりだす
hl <- substr(ag.dat[,3], 1, 1)
on <- substr(ag.dat[,4], 1, 1)
variable <- paste(pn, hl, on, sep = "_") # variableという変数名じゃないとcast関数ではエラー
value <- ag.dat$rt # valueという変数名じゃないとcast関数ではエラー
pid <- ag.dat$Group.1
ag.w <- cast(data.frame(pid, value, variable))
ag.w
tapply, by等も試したが、たぶんaggregate関数が一番便利
dat <- read.table("https://blog.cnobi.jp/v1/blog/user/89d80905c7038b4121822249e9062fba/1261414199", header = T)
dat # データファイル。
summary(dat)
ag.dat <- aggregate(x=dat[5:6], by=list(dat[,1],dat[,2], dat[,3], dat[,4]), FUN=mean)
ag.dat # 個人別に条件ごとのrtの平均値をだす
## tapplyはINDEXの3番目からリスト要素になる。tapplyはデータに2列指定できない
tapply(X=dat[,5], INDEX=list(dat[,1], dat[,2], dat[,3],dat[,4]), FUN=mean)
# 分析しやすいようにreshapeパッケージのcast関数で横長にする
library(reshape)
pn <- substr(ag.dat[,2], 1, 3) # 横長データセットの変数名をつくるため、substrで一部をとりだす
hl <- substr(ag.dat[,3], 1, 1)
on <- substr(ag.dat[,4], 1, 1)
variable <- paste(pn, hl, on, sep = "_") # variableという変数名じゃないとcast関数ではエラー
value <- ag.dat$rt # valueという変数名じゃないとcast関数ではエラー
pid <- ag.dat$Group.1
ag.w <- cast(data.frame(pid, value, variable))
ag.w
spssはもうほとんど使わないのだが、たまにサンプルをspss出力で載せているページもあるので
# データを開く
R-tipsの記事より。感謝
library(foreign)
dat <- read.spss("filename.sav")
## このままだとリストなのでデータフレームにする
dat2 <- data.frame(dat)
## dat <- data.frame(read.spss("filename.sav")) # これでもいい
# webからもいける
dat <- data.frame(read.spss("http://davidakenny.net/dtt/morse_et_al.sav"))
# フリーのビューワがある。SPSSのデータ加工のためのもののようで、公式ではない
ViewSav
http://www.asselberghs.dds.nl/stuff.htm
# 出力を読む
フリーのビューワが提供されているのでそれを使う
spoファイル
http://www.spss.co.jp/techsupport/tech-info/spss_statistics_170/000622.html
spvファイル
http://www.spss.co.jp/techsupport/tech-info/spss_statistics_170/000623.html
# データを開く
R-tipsの記事より。感謝
library(foreign)
dat <- read.spss("filename.sav")
## このままだとリストなのでデータフレームにする
dat2 <- data.frame(dat)
## dat <- data.frame(read.spss("filename.sav")) # これでもいい
# webからもいける
dat <- data.frame(read.spss("http://davidakenny.net/dtt/morse_et_al.sav"))
# フリーのビューワがある。SPSSのデータ加工のためのもののようで、公式ではない
ViewSav
http://www.asselberghs.dds.nl/stuff.htm
# 出力を読む
フリーのビューワが提供されているのでそれを使う
spoファイル
http://www.spss.co.jp/techsupport/tech-info/spss_statistics_170/000622.html
spvファイル
http://www.spss.co.jp/techsupport/tech-info/spss_statistics_170/000623.html
reshape関数より便利なのがreshapeパッケージにある
melt, cast関数
meltは縦長
castは横長
# データ生成
dat <- data.frame(s = factor(1:8), a = factor(c(rep(1,4), rep(2, 4))), b1 = rnorm(8), b2 = rnorm(8), b3 = rnorm(8))
dat
library(reshape)
# 縦長にする
dat.l <- melt(dat, id = c("s", "a"))
dat.l
# 横長にする
## 結果はvalue, 反復測定変数はvariableという変数名でないとエラーになる
names(dat.l) # 変数名のチェック
[1] "s" "a" "variable" "value"
cast(dat.l)
ピボットテーブルのようにも使えるらしい (Rjpwikiの記事。感謝)
そのうち調べよう
melt, cast関数
meltは縦長
castは横長
# データ生成
dat <- data.frame(s = factor(1:8), a = factor(c(rep(1,4), rep(2, 4))), b1 = rnorm(8), b2 = rnorm(8), b3 = rnorm(8))
dat
library(reshape)
# 縦長にする
dat.l <- melt(dat, id = c("s", "a"))
dat.l
# 横長にする
## 結果はvalue, 反復測定変数はvariableという変数名でないとエラーになる
names(dat.l) # 変数名のチェック
[1] "s" "a" "variable" "value"
cast(dat.l)
ピボットテーブルのようにも使えるらしい (Rjpwikiの記事。感謝)
そのうち調べよう