[英]ifelse statement based on vector of conditions in r
假設我有一個簡單的數據框,其中包含這樣的 ID 列表:
df<-tibble(id=1:5)
然后我有一個這樣的 ID 向量:
ids<-3:7
我正在嘗試編寫一個if
或ifelse
語句,該語句將檢查每個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%
創建一個邏輯向量並根據ifelse
或case_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%
對包含no和yes的向量進行子集化:
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.