簡體   English   中英

根據 R 中的多個條件選擇行

[英]select rows based on multiple criteria in R

我有一個類似於下面的巨大數據集:

Df <- data.frame("Candidate ID"   = c(1042,  1042, 1113, 1113, 1146, 1277, 1381, 1381, 1402, 1402),
                 "Application ID" = c(1040, 13006, 1111, 1125, 1144, 1274,   41,   61,   64,   65),
                  "Question"     = c("Yes", "Yes", "No","Yes", "Yes","No", "No", "No","Yes", "No"))

背景:候選人可以申請多個職位申請,每次都會收到不同的申請 ID。 一個候選人 ID 也可以申請多達 25 個職位申請,即申請 25 次不同的時間。 在我的簡化示例中,最大值為 2。

數據

我想提取所有問題的答案都是“是”的候選人 ID。 在示例中,我只想提取候選 ID 1042 和 1146。如何在 R 中執行此操作?

我檢查了 StackOverflow 並找不到匹配的答案,也許也是描述問題的困難。 至少我努力創建了一個最小的可重復示例,以便於幫助我。

這是否有效:

library(dplyr)
Df %>% group_by(Candidate.ID) %>% filter(all(Question == 'Yes'))
# A tibble: 3 x 3
# Groups:   Candidate.ID [2]
  Candidate.ID Application.ID Question
         <dbl>          <dbl> <chr>   
1         1042           1040 Yes     
2         1042          13006 Yes     
3         1146           1144 Yes     

帶有subset base R的選項

  1. 提取“Candidate.ID”,其中“問題”值為“是”
  2. 提取“Candidate.ID”,其中“Question”值為“No”
  3. 通過從 1 和 2 執行setdiff獲取在“問題”中具有“是”值而不是任何“否”的unique “Candidate.ID”
  4. 使用該 'Candidate.ID' 創建一個邏輯向量,使用%in%和 'Candidate.ID' 的整列,用於對 'Candidate.ID' 在 'Question' 中只有 'Yes' 值的行進行subset
subset(Df, Candidate.ID %in% setdiff(Candidate.ID[Question == 'Yes'], 
       Candidate.ID[Question == "No"]))
#  Candidate.ID Application.ID Question
#1         1042           1040      Yes
#2         1042          13006      Yes
#5         1146           1144      Yes

數據表

df <- data.frame("Candidate ID"   = c(1042,  1042, 1113, 1113, 1146, 1277, 1381, 1381, 1402, 1402),
                 "Application ID" = c(1040, 13006, 1111, 1125, 1144, 1274,   41,   61,   64,   65),
                 "Question"     = c("Yes", "Yes", "No","Yes", "Yes","No", "No", "No","Yes", "No"))



library(data.table)
setDT(df)[, .SD[all(Question == "Yes")], by = Candidate.ID]
#>    Candidate.ID Application.ID Question
#> 1:         1042           1040      Yes
#> 2:         1042          13006      Yes
#> 3:         1146           1144      Yes

reprex 包( v2.0.0 ) 於 2021 年 6 月 16 日創建

暫無
暫無

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

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