Как посчитать, сколько раз значение появляется в столбце для каждого уникального идентификатора? - PullRequest
0 голосов
/ 09 марта 2020

У меня есть фрейм данных с идентификатором и разрешением да и нет, например

a <- data.frame(id = c(1,1,1,1,1,2,2,2,3,3,3,3), val = c("y","y","y","n","n","n","n","y","n","n","y","y"))

исходный фрейм данных

Я хочу вывести для каждого уникального идентификатора самое повторное значение. пример результата для этого кадра данных:

data.frame(id = c(1,2,3), val = c("y","n","y"))[result][2]

или

data.frame(id = c(1,2,3), val = c("y","n","n"))

Любая помощь приветствуется заранее!

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

другой вариант

library(dplyr)
df %>% 
  count(id, val) %>% 
  group_by(id) %>% 
  top_n(1, n) %>% 
  select(-n)
0 голосов
/ 09 марта 2020

Мы можем сделать группу по 'id' и применить Mode к 'val'

library(dplyr)
Mode <- function(x) {
   ux <- unique(x)
   ux[which.max(tabulate(match(x, ux)))]
 }

a %>% 
     group_by(id) %>% 
     summarise(val = Mode(val))
# A tibble: 3 x 2
#     id val  
#  <dbl> <fct>
#1     1 y    
#2     2 n    
#3     3 n    

Или используя только base R

aggregate(val ~ id, a, Mode)
#   id val
#1  1   y
#2  2   n
#3  3   n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...