簡體   English   中英

使用 R 進行條件過濾

[英]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)

tidyrcomplete方法是:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM