2011-07-01 4 views
1

私は比較的新しいRユーザーです。複雑なコーディング(およびパッケージ)のほとんどはギリシャ語のようです。私はプログラミング言語(Java/Perl)を使っていて、これまでは非常に簡単な操作(ファイルからの基本的な読み込みデータ、部分集合、ANOVA/T-Test)のためにRを使っていました。しかし、私はデータレイアウトを制御できず、データファイルが非常に長いプロジェクトに取り組んでいます。大きなデータセットをフィルタリングしてすべての列で同じ要素を除外します

私のデータには、172の行があり、調査に参加者と158の列があり、それぞれが質問番号を表します。それぞれの答えは1-5です。生データには、質問が回答されなかったことを示すための数字「99」が含まれる。私は、参加者全員を除外せずに参加者が答えなかった質問を除外する必要があります。私はすべての答えがあるのセットで働いていたときに正常に動作サブセット(データ、Q001 = 99!) -

私は私のデータ data.filter <をフィルタリングするサブセット機能を使用していた過去に
Part Q001 Q002 Q003 Q004 
1  2  4 99 2 
2  3  99 1  3 
3  4  4 2  5 
4  99  1 3  2 
5  1  3 4  2 

1つの列に含まれています。そうすれば、回答が利用できなかった行全体が削除されます。 Iは、カラム1(Q001)99をサブセット場合、158個の列にまたがってこのセットの答えが

は、私はまた、全体参加することを除外する。

「99」が発生したときに大きなデータセットが「空白」になるようにデータをフィルタリングまたはサブセット化する方法があるかどうかを知りたいのですが、これらの99が膨らんだり、私は統計の残りの数字を実行します。私は質問ごとに手段を計算し、ANOVAやT-Testをさまざまな質問で実行できるようにする必要があります。

Resp Q001 Q002 Q003 Q004 
1  2  4   2 
2  3   1  3 
3  4  4 2  5 
4    1 3  2 
5  1  3 4  2 

これはRで可能ですか?私はRに提出する前にそれをフィルタリングしようとしましたが、空白があるときにデータファイルを読み取ることはなく、各質問ごとにサブセットを作成せずにデータセット全体を使用できるようにしたいとします。私がしなければならない場合、私はどのような援助がいただければ幸いです)を使用するより良いコードまたはパッケージがある場合はそれだけで時間がかかるのです...

を行います!あなたは「NA」で「99」を置き換えるとNASを省略colMeansを計算することができ

答えて

3

df <- replicate(20, sample(c(1,2,3,99), 4)) 
colMeans(df) # nono 

dfc <- df 
dfc[dfc == 99] <- NA 
colMeans(dfc, na.rm = TRUE) 
+0

これは、あなたが提供された例では素晴らしい仕事が、私は私の大規模なデータセットに適用しようとしたとき、私は状態「x」は数値でなければなりませんエラーが発生します。 header = TRUEのデータをインポートしました。データセットを見ると、ヘッダーは数値の唯一のものです。すべての列には1-5とが含まれています。プログラムが私の数値を整数として解釈しない可能性はありますか?私は、私が何かを壊した99を計算しようとしない私の試みのどこかを見て、すべてのデータを再インポートしようとするかもしれません! – Aibhilin

+0

私は輸入時に何かを混乱させてしまったに違いありません、私はちょうどリロードしました。ありがとう! – Aibhilin

2

また、あなたは、データベースを読んだときの値がNAのかを示すことができます。あなたの特定のケースの場合:

mydata <- read.table('dat_base', na.strings = "99") 
+0

チップをありがとう! na.stringsも空白/欠落したスポットをNAとして読み取ることができますか?私はいくつかの領域で空白がある前にデータを読み込もうとしましたが、 mydata < - read.table( 'dat.base'、na.strings = "99"、na.strings = "")と言うことができます。 またはRにテーブル内の欠落したスポットをNAとして自動的に読み取らせる他の方法がありますか? 私は通常、最初にExcelでデータを開いて、欠落しているすべてのセルをNA/0 /何であれ元のデータと置き換えなければなりませんが、データセットは非常に大きいので、それを開くことさえできません一つのエクセルファイルしかないので、Rでそれをすべて実行できるのはすばらしいことです! – Aibhilin

+0

?read.table: "空欄は、論理フィールド、整数フィールド、数値フィールド、および複合フィールドに欠損値と見なされます。"あなたがRを知っていれば、あなたは優れている必要はありません! – EDi

+1

はい、次のようにすることができます:read.table( 'dat.base'、na.strings = c( ""、 "99")) –

関連する問題