Удалить дубликаты на основе набора условий в двух столбцах (данные времени) - PullRequest
0 голосов
/ 23 мая 2018

Ниже приведен образец набора данных с расписанием посещаемости.Я хочу сохранить запись для самого раннего punch_in и последнего punch_out (т.е. id-1, name-sam, punch_in -8/6/2015 8:00:00 и punch_out- 06.08.2015 16:05:00),Как удалить другие повторяющиеся записи в R?

id<-c(1,1,1,1,2,3,4)
name<-c("sam","sam","sam","sam","jack","john","jude")
sex<-c("M","M","M","M","M","M","F")
punch_in<-c("8/6/2015 8:00:00","8/6/2015 8:05:00","8/6/2015 8:00:00","8/6/2015 8:05:00","8/6/2015 8:06:00","8/6/2015 7:59:00","8/6/2015 8:00:00")
punch_out<-c("8/6/2015 16:00:00","8/6/2015 16:00:00","8/6/2015 16:05:00","8/6/2015 16:05:00","8/6/2015 16:00:00","8/6/2015 16:05:00","8/6/2015 16:05:00")
data<-as.data.frame(cbind(id,name,sex,punch_in,punch_out))

1 Ответ

0 голосов
/ 23 мая 2018
id<-c(1,1,1,1,2,3,4)
name<-c("sam","sam","sam","sam","jack","john","jude")
sex<-c("M","M","M","M","M","M","F")
punch_in<-c("8/6/2015 8:00:00","8/6/2015 8:05:00","8/6/2015 8:00:00","8/6/2015 8:05:00","8/6/2015 8:06:00","8/6/2015 7:59:00","8/6/2015 8:00:00")
punch_out<-c("8/6/2015 16:00:00","8/6/2015 16:00:00","8/6/2015 16:05:00","8/6/2015 16:05:00","8/6/2015 16:00:00","8/6/2015 16:05:00","8/6/2015 16:05:00")
data<-as.data.frame(cbind(id,name,sex,punch_in,punch_out))

library(dplyr)

data %>%
  group_by(id, name, sex) %>%                 # for each combination of id, name, sex
  summarise(punch_in = first(punch_in),       # keep the first punch in
            punch_out = last(punch_out)) %>%  # keep the last punch out
  ungroup()                                   # forget the grouping

# # A tibble: 4 x 5
#   id    name  sex   punch_in         punch_out        
#   <fct> <fct> <fct> <fct>            <fct>            
# 1 1     sam   M     8/6/2015 8:00:00 8/6/2015 16:05:00
# 2 2     jack  M     8/6/2015 8:06:00 8/6/2015 16:00:00
# 3 3     john  M     8/6/2015 7:59:00 8/6/2015 16:05:00
# 4 4     jude  F     8/6/2015 8:00:00 8/6/2015 16:05:00

Предполагается, что строки расположены по порядку, поэтому для каждого идентификатора первый является самым ранним, а последний - самым последним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...