Сохранять значения из списка на основе первой записи метки времени - PullRequest
2 голосов
/ 27 сентября 2019

Я хотел бы сохранить от внешнего списка:

list <- c("Google", "Yahoo", "Amazon")

Значения в кадре данных, которые имеют запись в первой временной отметке (самой старой временной отметке) в данных, как это:

dframe <- structure(list(id = c(1L, 1L, 1L, 1L, 2L, 2L, 2L), name = c("Google", 
    "Google", "Yahoo", "Amazon", "Amazon", "Google", "Amazon"), date = c("2008-11-01", 
    "2008-11-02", "2008-11-01", "2008-11-04", "2008-11-01", "2008-11-02", 
    "2008-11-03")), class = "data.frame", row.names = c(NA, -7L))

Ожидаемый результат будет таким:

id   name       date
1 Google 2008-11-01
1  Yahoo 2008-11-01
1 Amazon 2008-11-04
2 Amazon 2008-11-01
2 Google 2008-11-02

Как это возможно сделать?

Использование это сохранить толькопервая запись для каждого идентификатора, а не для каждого отдельного значения из списка, который был записан впервые за время

library(data.table)
setDT(dframe)
date_list_first = dframe[order(date)][!duplicated(id)]

Ответы [ 3 ]

5 голосов
/ 27 сентября 2019

Использование data.table:

dframe = data.table(dframe)
dframe[, date := as.Date(date)]

dt = dframe[, .(date = min(date)), .(id, name)]

> dt
   id   name       date
1:  1 Google 2008-11-01
2:  1  Yahoo 2008-11-01
3:  1 Amazon 2008-11-04
4:  2 Amazon 2008-11-01
5:  2 Google 2008-11-02
2 голосов
/ 27 сентября 2019

Опция, использующая base R

dframe$date <- as.Date(dframe$date)
aggregate(date~ ., dframe, min)
#  id   name       date
#1  1 Amazon 2008-11-04
#2  2 Amazon 2008-11-01
#3  1 Google 2008-11-01
#4  2 Google 2008-11-02
#5  1  Yahoo 2008-11-01
1 голос
/ 27 сентября 2019

Вот как вы можете сделать это в dplyr:

dframe %>% mutate(date = as.Date(date)) %>%
group_by(id, name) %>% summarise(date = min(date)) %>%
ungroup()

Ничего особенного, просто группируйте и суммируйте.

Вывод

# A tibble: 5 x 3
     id name   date      
  <int> <chr>  <date>    
1     1 Amazon 2008-11-04
2     1 Google 2008-11-01
3     1 Yahoo  2008-11-01
4     2 Amazon 2008-11-01
5     2 Google 2008-11-02
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...