我有一个数据库,可以在不同的时间对某个对象进行多次观察,在这种情况下可以发生或不发生事件。
我想知道每个对象是否有事件。
以下是一个例子:
x=c(1,1,1,2,2,2,3,3,3)
y=c(1,2,3,1,2,3,1,2,3)
z=c(NA,NA,NA,F,NA,NA,F,F,T)
df=data.frame(object=x, time=y, event=z)
预期输出为Object 1 = NA
,Object 2 = FALSE
和Object 3 = TRUE
以下是我的尝试:
df %>% group_by(object) %>% summarise(any(event==T, na.rm=F))
#Object 2 = NA
df %>% group_by(object) %>% summarise(any(event==T, na.rm=T))
#Object 1 = FALSE
我怎样才能做到这一点?
答案 0 :(得分:3)
我们可以尝试
df %>%
group_by(object) %>%
summarise(Col = as.logical(any(event, na.rm = TRUE)* NA^(all(is.na(event)))) )
# A tibble: 3 x 2
# object Col
# <dbl> <lgl>
#1 1 NA
#2 2 FALSE
#3 3 TRUE
答案 1 :(得分:1)
sapply(split(df$event, df$object), function(x)
ifelse(all(is.na(x)), NA, as.logical(max(x, na.rm = TRUE))))
# 1 2 3
# NA FALSE TRUE