You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用R函数统计数据集中指定列的唯一值出现频率?

生成指定列的唯一值频率表

嘿,既然你已经在使用tidyverse生态了,那用它的工具来实现你想要的频率统计简直得心应手!这里有几种简单直接的方法:

方法1:用count()函数(最简洁)

count()是tidyverse里专门用来统计分组出现次数的函数,一行代码就能搞定:

library(tidyverse)
library(lubridate)

# 你的数据集
myDF <- tibble(country = rep(c("UK", "US"), each = 3), 
               date = c("2020-01-01", "2020-02-01", "2020-02-01", "2020-03-01", "2020-03-01", "2020-03-01")) %>% 
  mutate(date = as_date(date))

# 生成频率表
myDF %>% 
  count(date, name = "freq")

执行后你会得到完美符合需求的输出:

# A tibble: 3 × 2
  date       freq
  <date>     <int>
1 2020-01-01     1
2 2020-02-01     2
3 2020-03-01     3

方法2:group_by() + summarise()(更灵活)

如果之后需要扩展统计其他指标,这种组合方式更灵活:

myDF %>% 
  group_by(date) %>% 
  summarise(freq = n(), .groups = "drop")
  • group_by(date) 按日期列分组
  • summarise(freq = n()) 计算每组的行数(即出现频率)
  • .groups = "drop" 取消分组状态,返回普通的tibble

额外技巧:按频率排序

如果想把结果按频率从高到低排列,只需在后面加个arrange()

myDF %>% 
  count(date, name = "freq") %>% 
  arrange(desc(freq))

输出会变成:

# A tibble: 3 × 2
  date       freq
  <date>     <int>
1 2020-03-01     3
2 2020-02-01     2
3 2020-01-01     1

内容的提问来源于stack exchange,提问作者kiwi

火山引擎 最新活动