Подсчитать количество изменений в столбце даты на основе другого атрибута - PullRequest
1 голос
/ 14 февраля 2020

Привет всем, у меня возникла проблема при проверке данных. Мне нужно иметь количество изменений в столбце даты для каждой уникальной переменной в столбце имени. Например:

student.data <- data.frame(student_id = c (1:7),
                            student_name=c("Rick","Rick","Michelle","Michelle","Rick","Michelle","John"), 
                            mark = c(623.3,515.2,611.0,729.0,843.25,459.4,846.65), 
                            date_of_exam = as.Date(c("2014-01-01","2013-09-23","2014-11-15","2014-05-11", "2014-01-01","2016-04-14","2015-05-12")))

Я знаю, что это довольно сложно, но результат должен быть:

>table

>"Rick"
1  
>"Michelle"
2  
>"John"
0

Заранее спасибо за вашу помощь.

Ответы [ 2 ]

3 голосов
/ 14 февраля 2020

Вы можете группировать по студентам и подсчитать количество различных дат и вычесть одно:

library(dplyr)

student.data %>%
  group_by(student_name) %>%
  summarise(cnt = n_distinct(date_of_exam) -1)

# A tibble: 3 x 2
  student_name   cnt
  <fct>        <dbl>
1 John             0
2 Michelle         2
3 Rick             1
2 голосов
/ 14 февраля 2020

data.table способ:

library(data.table)

setDT(student.data)
student.data[, .(change = uniqueN(date_of_exam) - 1), student_name]

#   student_name change
#1:         Rick      1
#2:     Michelle      2
#3:         John      0

или в базе R:

aggregate(date_of_exam~student_name,student.data, function(x) length(unique(x)) - 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...