【发布时间】:2018-10-04 19:13:43
【问题描述】:
我有一个数据框 jj:
jj<-data.frame(a=rep(1:3,3),b=c(TRUE,rep(FALSE,4),TRUE,TRUE,FALSE,TRUE))
如果具有特定a 的任何行具有 b==TRUE,我想创建第三列。所以我尝试了这个:
group_by(jj,a) %>% mutate(c=any(isTRUE(b)))
但是我得到的结果是这样的:
# A tibble: 9 x 3
# Groups: a [3]
a b c
<int> <lgl> <lgl>
1 1 TRUE FALSE
2 2 FALSE FALSE
3 3 FALSE FALSE
4 1 FALSE FALSE
5 2 FALSE FALSE
6 3 TRUE FALSE
7 1 TRUE FALSE
8 2 FALSE FALSE
9 3 TRUE FALSE
我的预期结果应该是这样的:
# A tibble: 9 x 3
# Groups: a [3]
a b c
<int> <lgl> <lgl>
1 1 TRUE TRUE
2 2 FALSE FALSE
3 3 FALSE TRUE
4 1 FALSE TRUE
5 2 FALSE FALSE
6 3 TRUE TRUE
7 1 TRUE TRUE
8 2 FALSE FALSE
9 3 TRUE TRUE
我什至不明白为什么我得到的都是 FALSE —— 如果它都是 TRUE 就有意义了,我认为 any() 出于某种原因获得了完整的专栏。我缺少什么,我怎样才能达到预期的效果?
【问题讨论】: