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