У меня есть следующий пример набора данных:
library(tidyverse)
dataset <- data.frame(id = c("A","A","B","B","C","A","C","B"),
value = c(100, 500, 200, 100, 500, 300, 400, 100),
status = c(NA, "Valid", NA, NA, "Pend", NA, NA, NA),
stringsAsFactors = FALSE)
Мне нужно извлечь эти уникальные идентификаторы с наибольшим значением и узнать, сколько они повторяются и первый статус не-NA.
Я решил это следующим образом:
dataset_count <- dataset %>% group_by(id) %>%
summarise(count = n(), comment = max(status, na.rm = TRUE)) %>% ungroup()
dataset_cross <- dataset %>% arrange(desc(value)) %>%
left_join(dataset_count) %>% distinct(id, .keep_all = TRUE)
, но так как в моем исходном наборе данных содержится 120 переменных и больше правил, я хотел бы знать, есть ли способ сделать его более компактным. Например, я читал о объединении, но это не позволяет мне извлечь первый NA в сгруппированных данных. Пожалуйста, не могли бы вы дать совет? Спасибо.