Как удалить повторяющиеся значения из набора данных и посчитать, сколько раз каждое значение дублируется? - PullRequest
0 голосов
/ 07 мая 2019

Я получаю набор данных каждый месяц с уникальными ссылочными идентификаторами, которые содержат повторяющиеся значения.Я должен удалить дубликаты уникальных идентификаторов и посчитать, сколько раз каждый из них дублируется.

name <- c("A","A","A","B","B","c","D","A")
age <- c(22,23,22,32,32,54,65,70)
sex <- c("m","f","f","m","m","f","m","f")
both <- data.frame(name,age,sex)
both

both[!duplicated(both$name),]

Желаемый результат:

name    age sex count
A   70  f   4
B   32  m   2
C   54  f   1
D   65  m   1   

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Эта комбинация дает ваш результат

both <- both%>%group_by(name)%>%mutate(Count = n())
both <- both%>%group_by(name)%>%slice(n())
0 голосов
/ 07 мая 2019

Мы можем сгруппировать по 'имени', получить счетчик частоты (n()), затем filter строки, имеющие наибольшее значение частоты 'sex', и slice последняя строка

library(dplyr)
both %>% 
    group_by(name) %>%
    group_by(n = n(), add = TRUE) %>%
    filter(sex == Mode(sex)) %>% 
    slice(n())
# A tibble: 4 x 4
# Groups:   name, n [4]
#  name    age sex       n
#  <fct> <dbl> <fct> <int>
#1 A        70 f         4
#2 B        32 m         2
#3 c        54 f         1
#4 D        65 m         1

где

Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...