2016-02-28 56 views
-4

這是我以前看數據的子集的代碼:子集R中產生NA

active<-clinic[ 
    (clinic$Days.since.injury.physio > 20 & clinic$Days.since.injury.physio < 35) 
    &(clinic$Days.since.injury.F.U.1 > 27 & clinic$Days.since.injury.F.U.1 < 63) 
, ] 

我想選擇一組基於兩個標準的受試者,然後分析它們的結果。開始時,當我注意到na超過整個數據集時,我正在查看描述性數據。

子集似乎導致NA的。我查看了幾篇文章,其中包括以下兩篇看起來相關的文章,但我不明白如何應用這些答案。

  1. 爲什麼子集會導致完整數據集中不存在的na? (我認爲其他帖子的回答是在另一個變量中有一個na)

  2. 我該如何解決這個問題?

我希望能夠從存在的變量中獲取值,而不是在缺少值時忽略整行。

謝謝。

Subsetting R data frame results in mysterious NA rows

NA when trying to summarize a subset of data (R)

+2

嘿,請將您的代碼放在代碼塊中,以便其可讀,並請以某種方式提供數據集。那真棒。如果你不這樣做,你的文章將被其他人壓低。 – InfiniteFlashChess

+1

爲了提供數據集,編輯你的問題並粘貼在'dput(head(clinic))的輸出中' – SymbolixAU

+0

你可以在你的子集聲明中使用'which',例如:'clinic [which((clinic $ Days.since。 (診所)$ days.since.injury.FU1> 27&clinic $ Days.since.injury.FU1 <63)),]' – Jaap

回答

-1

這是一種變通方法,在您的#2

的迴應看你的代碼,有子集數據的更簡單的方法。嘗試這個。

檢查是否解決了您的問題。

library(dplyr) 

active<- clinic %>% 
filter(Days.since.injury.physio>20, 
     Days.since.injury.physio<35, 
     Days.since.injury.F.U.1>27, 
     Days.since.injury.F.U.1<63 
    ) 

當涉及到數據的子集化和操作時,dplyr會有奇蹟。

%>%符號鏈接語句,因此您不必使用$符號。

如果,理由很奇怪,你不喜歡這樣,你應該看看r中功能。

+0

感謝您的快速回復。 dplyr很好地工作。 – dmd