簡體   English   中英

基於 r 中條件向量的 ifelse 語句

[英]ifelse statement based on vector of conditions in r

假設我有一個簡單的數據框,其中包含這樣的 ID 列表:

df<-tibble(id=1:5)

然后我有一個這樣的 ID 向量:

ids<-3:7

我正在嘗試編寫一個ififelse語句,該語句將檢查每個id是否包含在ids向量中的任何 id 中。 結果將是這樣的:

df1<-tibble(id=1:5,included=c("no","no","yes","yes","yes"))
# A tibble: 5 x 2
     id included
  <int> <chr>   
    1     no      
    2     no      
    3     yes     
    4     yes     
    5     yes

我們可以使用%in%創建一個邏輯向量並根據ifelsecase_when或僅通過索引替換值

library(dplyr)
df <- df %>%
    mutate(included = case_when(id  %in% ids ~  "yes", TRUE ~ "no"))
df

R base

df$included <- df$id %in% ids
df
# A tibble: 5 x 2
     id included
  <int> <lgl>   
1     1 FALSE   
2     2 FALSE   
3     3 TRUE    
4     4 TRUE    
5     5 TRUE

ifelse 函數適用於向量。 您可能正在尋找 %in% 運算符? 你試過谷歌嗎?

df$included <- ifelse(df$id %in% ids, "yes", "no")

您可以使用%in%對包含noyes的向量進行子集化:

df$included <- c("no", "yes")[1 + df$id %in% ids]
## A tibble: 5 x 2
#     id included
#  <int> <chr>   
#1     1 no      
#2     2 no      
#3     3 yes     
#4     4 yes     
#5     5 yes     

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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