获取最大col值并将其设为新变量

时间:2019-02-16 15:51:07

标签: r dplyr

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))

假设您拥有groupscore的上述数据,目标是制作新变量MAKE,这只是每个{{ 1}}重复。

这是我的尝试,但不起作用。

score

1 个答案:

答案 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值中找到最大值。