首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多列上筛选时引入的NA值。

在多列上筛选时引入的NA值。
EN

Stack Overflow用户
提问于 2019-01-11 22:46:39
回答 1查看 67关注 0票数 0

我有一个大的复杂数据集,我需要仔细削减。在某些情况下,这意味着根据唯一的标准过滤单个记录。假设我有以下数据:

代码语言:javascript
复制
       locname mo dy   yr nest.stat daynight
1 CARACO CREEK  3  9 1994         U        D
2 CARACO CREEK  4  4 1994      <NA>        D
3 CARACO CREEK  4 14 1994      <NA>        N
4 CARACO CREEK  5  5 1994      <NA>        D
5 CARACO CREEK  5 17 1994      <NA>        N
6 CARACO CREEK  6 29 1994      <NA>        N
7 CARACO CREEK  8  2 1994         F        D

我需要删除第七条记录,它在locname_yr_nest.stat的数据集中是唯一的(我不能简单地说df-7,因为这个位置在新的数据迭代中可能会改变)。

我试过了

代码语言:javascript
复制
df[!(df$locname=="CARACO CREEK" & df$nest.stat=="F" & df$yr==1994),]

但那又回来了

代码语言:javascript
复制
          locname mo dy   yr nest.stat daynight
1    CARACO CREEK  3  9 1994         U        D
NA           <NA> NA NA   NA      <NA>     <NA>
NA.1         <NA> NA NA   NA      <NA>     <NA>
NA.2         <NA> NA NA   NA      <NA>     <NA>
NA.3         <NA> NA NA   NA      <NA>     <NA>
NA.4         <NA> NA NA   NA      <NA>     <NA>

如果我只对两个列(例如locname和yr)进行筛选,它就能正常工作。这就是我如何从更大的,显示所有1994年的记录,创建这个较小的集合。但是,添加第三列会抛出它。另外,这种方法在不同列上的不同数据集中有效。

以下是简单性的示例集:

代码语言:javascript
复制
df <- structure(list(locname = c("CARACO CREEK", "CARACO CREEK", "CARACO CREEK", 
"CARACO CREEK", "CARACO CREEK", "CARACO CREEK", "CARACO CREEK"
), mo = c(3, 4, 4, 5, 5, 6, 8), dy = c(9, 4, 14, 5, 17, 29, 2
), yr = c(1994, 1994, 1994, 1994, 1994, 1994, 1994), nest.stat = c("U", 
NA, NA, NA, NA, NA, "F"), daynight = c("D", "D", "N", "D", "N", 
"N", "D")), class = "data.frame", row.names = c(NA, 7L))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 22:54:34

您的条件检查nest.stat在比较"F“和NA时失败。

下面是一种杂乱无章的基本R方法:

代码语言:javascript
复制
df[!(df$locname == "CARACO CREEK" & 
     ifelse(!is.na(df$nest.stat),df$nest.stat == "F",FALSE) &
      df$yr == 1994),]

输出:

代码语言:javascript
复制
   locname mo dy   yr nest.stat daynight
1 CARACO CREEK  3  9 1994         U        D
2 CARACO CREEK  4  4 1994      <NA>        D
3 CARACO CREEK  4 14 1994      <NA>        N
4 CARACO CREEK  5  5 1994      <NA>        D
5 CARACO CREEK  5 17 1994      <NA>        N
6 CARACO CREEK  6 29 1994      <NA>        N
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54155037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档