2017-07-20 3 views
1

病院で生物データを扱っています(私はここには何も開示しませんが、この質問をする必要はありません)。我々は一定の時間がかかった抗体の濃度を調べています。 1つの理由または別の理由で、欠落しているデータポイントがデータセット全体に存在します。 私がやっていることは、欠けているデータポイントを対応する時間とともに削除しようとしていることです。基本的な目標は、いくつかの基本的なグラフとグラフを作成して実行することですが、最終的には別の言語で行うロジスティックモデルと非線形動力学モデルを作成したいと考えています。複数のベクターから欠けているデータポイント(NA)を削除する

data <- read.csv("blablabla.csv" header = T) 
Biomarker <- data[,2] 
time <- data[,1] 

2)その後、私は、データの並べ替え:

Biomarker <- Biomarker[order(time)] 
time <- sort(time, decreasing = F) 

3)その後、私はのインデックスを置く

1)まず、私はそれが対応する時間だと一緒にベクターに私のデータを入れますNA値をベクトルに入力する

NA_Index <- which(is.na(Biomarker)) 

4)次に、この指標のデータポイントをバイオマーカーと時間ベクトル

i <- 1 
n <- length(NA_Index) 

for(i:n){ 
    Biomarker[[NA_Index[i]]] <- NULL 
    time[[NA_Index[i]]] <- NULL 
} 

はまた、私は上記のものよりも、いくつかの異なるものを試してみました:

1)

Biomarker <- Biomarker[-NA_Index[i]] 

2)

Biomarker <- Biomarker[!= "NA"] 

私の質問は:「どのように私のベクトルからNA値を取り除き、同じインデックスで時間を取り除くのですか? "

だから明らかに私はRにとって新しく、まったく間違ってこのことを行っているかもしれません。私はちょうどあなたがいくつかのコードを投稿すれば、すべての機能が何をするのかをすべて説明するようにお願いします。助けてくれてありがとう。

+0

'complete.cases(data)'はより直接的かつ正確ですか? – r2evans

+0

私はcomplete.cases()が何をしているのか分かりません – jsaffy

+0

[ヘルプページ](https://stat.ethz.ch/R-manual/R-devel/library/stats/html/complete.cases) .html)おそらく別の例または2つを使用する可能性があります。 'x < - data.frame(a = c(1、NA、3)、b = c(NA、22,33));を試してください。 complete.cases(x); x [complete.cases(x)、]; '。 'x [complete.cases(x [、1])]]のように、' x'のどの列が完全性のためにスコープ内であると見なされるかはいつでもサブセット化できます。 – r2evans

答えて

0
> BioMarker 
[1] 1 2 NA 3 NA 5 
> is.na(BioMarker) 
[1] FALSE FALSE TRUE FALSE TRUE FALSE 
> BioMarker[is.na(BioMarker)] 
[1] NA NA 
> BioMarker[! is.na(BioMarker)] 
[1] 1 2 3 5 
> BioMarker <- BioMarker[! is.na(BioMarker)] 
> BioMarker 
[1] 1 2 3 5 
1

まず私はvecotorsのエントリが例に、これは、より適切なデータ構造で対応するので、2つのベクトルの代わりにdata.frameにデータを格納お勧めします。

my_table <- data.frame(time=time, Biomarker=Biomarker) 

その後、あなたは、単に全体data.frame、最初の次元が行されているサブセットができ、第二の列は、いつものように、すべての列を保つために自由に二次元を残します。

my_table <- my_table[!is.na(my_table$Biomarker), ] 
関連する問題