我正在尝试制作代码模板来过滤数据。我遇到的问题是存在各种级别的分类数据,如果我使用dplyr函数,则过滤器R如果数据中没有过滤级别,则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不存在(如果删除此行代码,我会得到数据)。我的问题是我不想要检查的还有什么,因为它会通过子集基础的子集变化的每一个数据集。任何帮助将不胜感激。
答案 0 :(得分:0)
通过说pelelts == 3
来告诉R您只想要3。您需要修改代码以捕获其他可接受的条件。如果不存在3,则必须执行其他操作,否则将不会返回任何结果。
答案 1 :(得分:0)
此代码获得了所需的结果,谢谢@ H5470
df%>%
mutate_all(as.character)%>%
filter(lease==1 | year==2010)%>%
filter(beg==1 & gas==2)%>%
mutate(pelelts=case_when(pelelts %in% '3'~ '3',
pelelts %in% c('0', '1', '2')~ '',
TRUE~as.character(pelelts)))
返回:
lease year beg gas pelelts
1 2010 1 2