[英]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)
只要每個ID
的Eval
中有一個 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.