Добавить исходные значения для столбцов после группировки по - PullRequest
2 голосов
/ 27 февраля 2020

Для приведенного ниже кадра данных я хочу добавить исходные значения для Var_x после group_by для идентификатора и события и max() для квеста, но я не могу правильно понять свой код. Какие-либо предложения? Кстати, в моем исходном кадре данных нужно добавить более 1 столбца.

df <- data.frame(ID = c(1,1,1,1,1,1,2,2,2,3,3,3),
                 quest = c(1,1,2,2,3,3,1,2,3,1,2,3),
                 event = c("A","B","A","B","A",NA,"C","D","C","D","D",NA),
                 VAR_X = c(2,4,3,6,3,NA,6,4,5,7,5,NA))

Код:

df %>%
  group_by(ID,event) %>%
  summarise(quest = max(quest))

Желаемый вывод:

  ID quest event VAR_X
1  1     2     B     6
2  1     3     A     3
3  2     2     D     4
4  2     3     C     5
5  3     2     D     5

Ответы [ 2 ]

4 голосов
/ 27 февраля 2020

Начните с пропуска значений na и в конце сделайте inner_join с исходным набором данных.

df %>%
  na.omit() %>%
  group_by(ID, event) %>%
  summarise(quest = max(quest)) %>%
  inner_join(df, by = c("ID", "event", "quest"))
## A tibble: 5 x 4
## Groups:   ID [3]
#     ID event quest VAR_X
#  <dbl> <fct> <dbl> <dbl>
#1     1 A         3     3
#2     1 B         2     6
#3     2 C         3     5
#4     2 D         2     4
#5     3 D         2     5
3 голосов
/ 27 февраля 2020
df %>%
  drop_na() %>% # remove if necessary ..
  group_by(ID, event) %>%
  filter(quest == max(quest)) %>%
  ungroup()

# A tibble: 5 x 4
# ID quest event VAR_X
#<dbl> <dbl> <chr> <dbl>
# 1     1     2 B         6
# 2     1     3 A         3
# 3     2     2 D         4
# 4     2     3 C         5
# 5     3     2 D         5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...