忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


# データフレームの変数ごとに欠損値があるかどうか
sapply(dat, function(x) sum(is.na(x)))

# 特定の値を欠損値とする
dat[dat=="setosa"] <- NA
dat[dat==9999] <- NA # 数値もできる

# 変数を指定して欠損値とする。データ内に既に欠損値があるとエラーになる
dat[dat$Species=="virginica", "Species"] <- NA

# 欠損値の除去
# 関数内では大体na.rm=Tとする
mean(x, na.rm=T)

# データフレームから行 (ケース) ごと除去
na.omit(dat)


Amelia II, Mice, mitools といったパッケージがあるらしい

# おまけ
dat2 <- dat
for(i in 1:ncol(dat)){
dat2[,i] <- replace(dat[,i], which(dat[,i]==0), NA)
}

PR
Comment
1
無題
以下の方法ありました
> dd <- data.frame(a=c(1,2,0,4), b=c(0,2,3,4))
> dd
a b
1 1 0
2 2 2
3 0 3
4 4 4
> class(dd)
[1] "data.frame"
> dd2 <- dd
> dd2[] <- lapply(dd2,function(x) replace(x,x==0,NA))
> dd2
a b
1 1 NA
2 2 2
3 NA 3
4 4 4
> dd3 <- dd2
> dd3[] <- lapply(dd3, function(x) replace(x, is.na(x), 999))
> dd3
a b
1 1 999
2 2 2
3 999 3
4 4 4
>
http://tolstoy.newcastle.edu.au/R/help/03a/0313.html

2
無題
dd2[dd2==0] <- NA
でもよさそうです。
逆は
dd3 <- dd2
dd3[is.na(dd3)] <- 0

3
ありがとうございます
OGAさん、コメントありがとうございます。
特に後者の方、シンプルにできるので感動しました

Trackback
Trackback URL

Comment form
Title
Color & Icon Vodafone絵文字 i-mode絵文字 Ezweb絵文字  
Comment
Name
Mail
URL
Password
プロフィール
HN:
tao
HP:
性別:
非公開
職業:
会社員
趣味:
アウトドア、自転車、ジョギング、英語学習
自己紹介:
・千葉在住のサラリーマンです。データ分析っぽいことが仕事。
・今年英検1級取得。今はTOEIC高得点を目指して勉強中。
・興味のあることは野球、アウトドア、英語学習、統計、プログラミング、PC関係などなど。
ブログ内検索
freead
順位表
プロ野球データFreak
セリーグ順位表
パリーグ順位表