2016-02-28 57 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