Как получить первые 100 уникальных мест в DF в R? - PullRequest
2 голосов
/ 20 апреля 2020

У меня есть df1 вроде:

     Date        Area               Fips score1   
    2020-01-21 Snohomish,Washington 53061 1
    2020-01-22 Snohomish,Washington 53061 1
    2020-01-23 Snohomish,Washington 53061 1
    2020-01-24 Cook,Illinois        17031 1
    2020-01-24 Snohomish,Washington 53061 1
    2020-01-25 Orange,California    06059 1
    2020-01-25 Cook,Illinois        17031 1
    2020-01-25 Snohomish,Washington 53061 1
    2020-01-26 Maricopa,Arizona     04013 1
    2020-01-26 Los Angeles,California 06037 1

Я хотел бы создать кадр данных из первых 100 уникальных округов, упорядоченных по дате, с выводом:

 Date        Area               Fips score1   
2020-01-21 Snohomish,Washington 53061 1
2020-01-24 Cook,Illinois        17031 1
2020-01-25 Orange,California    06059 1
2020-01-26 Maricopa,Arizona     04013 1
2020-01-26 Los Angeles,California 06037 1

Ответы [ 3 ]

3 голосов
/ 20 апреля 2020

В базе вы можете использовать order для заказа по Дата , !duplicated, чтобы получить уникальный Площадь и head, чтобы получить первые 100 как:

i <- order(df1$Date)
head(df1[i,][!duplicated(df1$Area[i]),], 100)
#         Date                   Area  Fips score1
#1  2020-01-21   Snohomish,Washington 53061      1
#4  2020-01-24          Cook,Illinois 17031      1
#6  2020-01-25      Orange,California  6059      1
#9  2020-01-26       Maricopa,Arizona  4013      1
#10 2020-01-26 Los_Angeles,California  6037      1
3 голосов
/ 20 апреля 2020

Как насчет этого:

install.packages("tidyverse")
library(tidyverse)

df1 %>% 
    distinct(Area, .keep_all = TRUE) %>%
    head(100) %>%
    arrange(Date)
2 голосов
/ 20 апреля 2020

Другой вариант - data.table

library(data.table)
unique(setDT(df1)[order(Date)], by = 'Area')[seq_len(100)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...