簡體   English   中英

如何使用多個 OR 語句過濾 R? Dplyr

[英]How to filter in R using multiple OR statments? Dplyr

我嘗試搜索此內容,但找不到我需要的內容。

這就是我的數據的樣子,

mydata <- data.frame(Chronic = c("Yes", "No", "Yes"),
                      Mental = c("No", "No", "No"),
                      SA = c("No", "No", "Yes"))

> mydata
  Chronic Mental  SA
1     Yes     No  No
2      No     No  No
3     Yes     No Yes

我的目標是獲取任何列等於是的行數。 在這種情況下,第 1 行和第 3 行至少有一個是。 其中第 2 行只有 No

有沒有容易做到這一點?

我們可以在邏輯matrix上使用rowSums ,然后得到邏輯向量的sum ,以返回至少有一個“是”的行數

sum(rowSums(mydata == 'Yes') > 0)
#[1] 2

或者使用tidyverse

library(dplyr)
mydata %>% 
   rowwise %>%
   mutate(Count = + any(c_across(everything()) == 'Yes')) %>%
   ungroup %>% 
   pull(Count) %>%
   sum
#[1] 2

如果你想寫出代碼(而不是使用cross),你可以使用case_when寫出代碼:

mydata %>% 
  mutate(yes_column = case_when(Chronic == 'Yes' | Mental == 'Yes' | SA == 'Yes' ~ 1,
                                TRUE ~ 0)) %>% 
  summarise(total = sum(yes_column))

如果 Yes 出現在任何列中,這將創建一個二進制標志。 這對於查看每一列的代碼是否正常工作非常有用,特別是發現是否存在諸如“是”或“是”甚至“是”之類的數據質量問題。 該| 表示 OR,您可以使用 & 表示 AND。

暫無
暫無

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

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