繁体   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