df = data.frame(group=c(1,1,1,2,2,2,3,3,3),
score=c(11,NA,7,NA,NA,4,6,9,15),
MAKE=c(11,11,11,4,4,4,15,15,15))
假设您拥有group
和score
的上述数据,目标是制作新变量MAKE
,这只是每个{{ 1}}重复。
这是我的尝试,但不起作用。
score
答案 0 :(得分:2)
为此您需要
df %>% group_by(group) %>% mutate(MAKE = max(score, na.rm = TRUE))
# A tibble: 9 x 3
# Groups: group [3]
# group score MAKE
# <dbl> <dbl> <dbl>
# 1 1 11 11
# 2 1 NA 11
# 3 1 7 11
# 4 2 NA 4
# 5 2 NA 4
# 6 2 4 4
# 7 3 6 15
# 8 3 9 15
# 9 3 15 15
max(is.na(score))
的问题在于is.na(score)
是一个逻辑向量,当应用max
时,它被强制转换为二进制向量,其中TRUE
为1,而FALSE
为0 df %>% group_by(group) %>% mutate(MAKE = max(score[!is.na(score)]))
。一个不太自然的解决方案,但更接近您尝试过的解决方案
score
在{{1}}的所有非NA值中找到最大值。