首页 > 解决方案 > 用于过滤数据框中可能存在或不存在观察值的数据的代码

问题描述

我正在尝试制作一个代码模板来过滤数据。我遇到的问题是有各种级别的分类数据,如果我使用 dplyr 函数 filter R 如果过滤级别不在数据中,则不返回任何数据。

例如:

library(dplyr)

lease   <-c(1,2,1)
year<-c(2010,2011,2010)
beg <-c(1,2,1)
gas<-c(1,2,2)
pelelts<-c(1,2,2)
df<-data.frame(lease, year, beg, gas, pelelts)

df%>%
 mutate_all(as.character)%>%
 filter(lease==1 | year==2010)%>%
 filter(beg==1 & gas==2)%>%
 filter(pelelts==3)

这将返回 <0 行>(或 0 长度的 row.names),我认为这是因为 pelelts==3 不存在(如果我删除这行代码,我会得到数据)。我遇到的问题是我不想检查每个数据集的内容,因为它会因子集而异。任何帮助都感激不尽。

标签: rdplyr

解决方案


通过说pelelts == 3你告诉 R 你想要 3。你需要修改你的代码来捕捉其他可以接受的条件。如果 3 不存在,则必须发生其他事情,否则不会返回任何结果。


推荐阅读