У меня есть фрейм данных 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
Я надеваюЯ даже не понимаю, почему я получаю ЛОЖЬ - это имело бы смысл, если бы все было ИСТИНА, и я бы подумал, что any()
по какой-то причине получает полный столбец.Чего мне не хватает, и как мне достичь желаемого результата?