如何基于分组data.frame中另一列中的任意()填充列?
我有一个dataframe jj:如何基于分组data.frame中另一列中的任意()填充列?,r,dplyr,mutate,any,R,Dplyr,Mutate,Any,我有一个dataframe jj: jj<-data.frame(a=rep(1:3,3),b=c(TRUE,rep(FALSE,4),TRUE,TRUE,FALSE,TRUE)) 但我得到的结果是: # A tibble: 9 x 3 # Groups: a [3] a b c <int> <lgl> <lgl> 1 1 TRUE FALSE 2 2 FALSE FALSE 3 3 FAL
jj<-data.frame(a=rep(1:3,3),b=c(TRUE,rep(FALSE,4),TRUE,TRUE,FALSE,TRUE))
但我得到的结果是:
# 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
#一个tible:9 x 3
#分组:a[3]
a、b、c
1对错
2假2假
3假3假
4 1假假
5.2假假
6 3真假
7.1真假
8.2假假
9 3真假
我的预期结果应该是:
# 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
#一个tible:9 x 3
#分组:a[3]
a、b、c
1正确的
2假2假
3假真实
4.1假-真
5.2假假
6.3正确的
7.1正确
8.2假假
9.3正确
我甚至不明白为什么我得到的都是假的——如果它都是真的,那就有意义了,而且我认为
any()
出于某种原因得到了完整的列。我遗漏了什么,如何才能达到预期的结果?我们需要在逻辑列上应用any
,而不是isTRUE
jj %>%
group_by(a) %>%
mutate(c = any(b))
# 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
is.logical(x) && length(x) == 1 && !is.na(x) && x
只有当表达式lhs
均为真时,才会计算&
的rhs
表达式
这里,
length(x)
等于1是不正确的,因此它返回FALSE我们需要在逻辑列上应用any
,而不是isTRUE
jj %>%
group_by(a) %>%
mutate(c = any(b))
# 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
is.logical(x) && length(x) == 1 && !is.na(x) && x
只有当表达式lhs
均为真时,才会计算&
的rhs
表达式
这里,length(x)
等于1是不正确的,因此它返回FALSE