Получить максимальное значение col и сделать его новой переменной - PullRequest
0 голосов
/ 16 февраля 2019
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, которая является максимальным значением score для каждого повторяемого group.

И это моя попытка, но она не работает.

df %>% 
    group_by(group) %>% 
    summarise(Value = max(is.na(score)))

1 Ответ

0 голосов
/ 16 февраля 2019

Для этого вам нужно

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, он приводится к двоичному вектору с 1 для TRUE и 0 для FALSE.Несколько менее естественным решением, но ближе к тому, что вы пробовали, было бы

df %>% group_by(group) %>% mutate(MAKE = max(score[!is.na(score)])) 

, которое находит максимальное значение среди всех тех значений score, которые не являются NA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...