Во вложенном фрейме данных, как рассчитать только самый высокий уровень категориальной переменной для каждого уникального идентификатора - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть такой набор данных:

ID    Action 
id1     A1 
id1     A2 
id1     A2 
id2     A3 
id2     A3 
id3     A1 
....

Действие является категориальной переменной: A3> A2> A1

Мой вопрос заключается в том, как подсчитать только самый высокий уровень действия в отличный идентификатор в R.

Для этого, я думаю, будет столько же действий, сколько и уникальных идентификаторов. Каждый идентификатор будет связан только с одним действием - наивысшим уровнем. Новый фрейм данных будет выглядеть так:

ID     Action 
ID1    A2 
ID2    A3 

1 Ответ

1 голос
/ 08 февраля 2020

Если мы создадим упорядоченный коэффициент для столбцов Action, мы можем принять значение max для каждого ID.

Используя базу R, мы можем использовать

aggregate(Action~ID, transform(df, 
          Action = factor(Action, levels = paste0('A', 1:3), ordered = TRUE)), max)

#   ID Action
#1 id1     A2
#2 id2     A3

Или в dplyr

library(dplyr)

df %>%
  mutate(Action = factor(Action, levels = paste0('A', 1:3), ordered = TRUE)) %>%
  group_by(ID) %>%
  summarise(Action = max(Action))

данных

df <- structure(list(ID = structure(c(1L, 1L, 1L, 2L, 2L), .Label = c("id1", 
"id2", "id3"), class = "factor"), Action = structure(c(1L, 2L, 
2L, 3L, 3L), .Label = c("A1", "A2", "A3"), class = "factor")), row.names = c(NA, 
5L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...