首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中过滤后,计算给定列中的唯一元素数

在R中过滤后,计算给定列中的唯一元素数
EN

Stack Overflow用户
提问于 2019-04-30 22:56:02
回答 2查看 45关注 0票数 0

假设我有一个数据表,如下所示:

代码语言:javascript
复制
year  city
2026  NYC
2026  NYC
2026  NYC
2026  LA
2027  LA
2028  NYC
2028  NYC

它可以通过以下方式创建:

代码语言:javascript
复制
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,因为只有NYCLA。后面的最后一行是什么?

代码语言:javascript
复制
dt %>% 
filter(year == 2026) %>%
What goes here?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-30 23:09:04

我们可以使用n_distinct来获得唯一值的数目。

代码语言:javascript
复制
library(dplyr)
dt %>%
  filter(year == 2026) %>%
  summarise(count = n_distinct(city)) 

#  count
#1     2

或者在摘要本身中添加过滤步骤。

代码语言:javascript
复制
dt %>% summarise(count = n_distinct(city[year == 2026]))

或者,如果我们希望它作为向量,我们可以添加pull(count)

代码语言:javascript
复制
dt %>%
  filter(year == 2026) %>%
  summarise(count = n_distinct(city)) %>%
  pull(count)
#[1] 2

在R基中,这相当于

代码语言:javascript
复制
length(unique(dt$city[dt$year == 2026]))
#[1] 2
票数 1
EN

Stack Overflow用户

发布于 2019-05-01 01:58:18

我们可以使用data.table

代码语言:javascript
复制
library(data.table)
setDT(dt)[year == 2026, .(count = uniqueN(location))]
#   count
#1:     2

或具有`基R‘

代码语言:javascript
复制
length(table(subset(dt, year == 2026, select = location)))
#[1] 2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55929642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档