[英]Conditional Filtering using R
考慮下面給出的 dataframe;
樣品 DataFrame
| Name | Age | Type |
---------------------
| EF | 50 | A |
| GH | 60 | B |
| VB | 70 | C |
執行過濾器的代碼
df2 <- df1 %>% filter(Type == 'C') %>% select(Name)
上面的代碼將為我提供一個具有單列和單行的 dataframe。
我想執行一個條件過濾器,如果某種類型不存在,它應該認為名稱為 NULL/NA。
例子
df2 <- df1 %>% filter(Type = 'D') %>% select(Name)
Must give an output of;
| Name |
--------
| NA |
而不是拋出錯誤。 任何輸入都會非常有幫助。 DPLYR 或任何其他方法都將是可觀的。
這是一個基本的 R 方法:
name <- df[df$Name == "D", "Name"]
ifelse(identical(name, character(0)), NA, name)
[1] NA
如果名稱與D
不匹配,則子集操作將返回character(0)
。 我們可以將 output 與此進行比較,然后酌情返回NA
。
數據:
df <- data.frame(Name=c("EF", "GH", "VB"),
Age=c(50, 60, 70),
Type=c("A", "B", "C"),
stringsAsFactors=FALSE)
tidyr
的complete
方法是:
library(dplyr)
library(tidyr)
df1 %>%
complete(Type = LETTERS) %>% # Specify which Types you'd expect, other values are filled with NA
filter(Type == 'D') %>%
select(Name)
# A tibble: 1 x 1
# Name
# <fct>
# 1 NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.