подсчитать количество уникальных элементов в данном столбце после фильтрации в R - PullRequest
0 голосов
/ 01 мая 2019

Допустим, у меня есть таблица данных, например:

year  city
2026  NYC
2026  NYC
2026  NYC
2026  LA
2027  LA
2028  NYC
2028  NYC

, которую можно создать:

dt <- structure(list(location = c("NYC", "NYC", "NYC","LA", "LA", "NYC", "NYC"), 
                     year = c(2026, 2026, 2026, 2026, 2027, 2028, 2028)),
                     class = "data.table", 
                     row.names = c(NA, -7L))

Я хочу подсчитать количество уникальных городов в данном году.Скажем 2026.Таким образом, результат в этом случае будет 2, потому что есть только NYC и LA.Что идет в последней строке следующего?

dt %>% 
filter(year == 2026) %>%
What goes here?

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Мы можем использовать data.table

library(data.table)
setDT(dt)[year == 2026, .(count = uniqueN(location))]
#   count
#1:     2

Или с `базой R

length(table(subset(dt, year == 2026, select = location)))
#[1] 2
1 голос
/ 01 мая 2019

Мы можем использовать n_distinct, чтобы получить количество уникальных значений

library(dplyr)
dt %>%
  filter(year == 2026) %>%
  summarise(count = n_distinct(city)) 

#  count
#1     2

Или добавить шаг фильтрации в суммировании себя

dt %>% summarise(count = n_distinct(city[year == 2026]))

Или, если мы хотим, чтобы он был вектороммы можем добавить pull(count)

dt %>%
  filter(year == 2026) %>%
  summarise(count = n_distinct(city)) %>%
  pull(count)
#[1] 2

В базе R это эквивалентно

length(unique(dt$city[dt$year == 2026]))
#[1] 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...