簡體   English   中英

根據 R 中的組的條件創建新列

[英]Creating a new column based on conditions by groups in R

我有一個 dataframe:

ID <- c(1,1,2,2,2,2,3,3,3,3,3,4,4,4)
Eval <- c(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE)
df <- data.frame(ID,Eval)

只要每個IDEval中有一個 FALSE,就應該有一列,比如 x,表示TRUE 如何創建此列?

output 應該是:

ID  x 
 1  FALSE 
 2  TRUE 
 3  TRUE
 4  FALSE

在按“ID”分組后,在否定( ! )“Eval”上使用any

library(dplyr)
df %>%
    group_by(ID) %>%
    summarise(x = any(!Eval))

-輸出

# A tibble: 4 × 2
     ID x    
  <dbl> <lgl>
1     1 FALSE
2     2 TRUE 
3     3 TRUE 
4     4 FALSE

作為替代方案,我們可以將%in%ifelse一起使用:

library(dplyr)
df %>% 
  group_by(ID) %>% 
  summarise(x = ifelse(FALSE %in% Eval, TRUE, FALSE))
     ID x    
  <dbl> <lgl>
1     1 FALSE
2     2 TRUE 
3     3 TRUE 
4     4 FALSE

暫無
暫無

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

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