在R中实现类似COUNTIF功能,为公交数据新增起点站频次列
解决RStudio中给大交通数据集添加起点站出现次数列的问题
Got it, handling large public transit datasets in RStudio is totally doable without Excel—here are two efficient, scalable methods to add that origin station count column you need:
方法1:用dplyr(tidyverse生态,直观易读)
如果平时习惯用tidyverse工具链,这个方法上手快、代码逻辑清晰:
- 先确保你安装并加载了dplyr包(没装的话先跑
install.packages("dplyr")) - 通过分组+新增列的方式完成统计:
library(dplyr) # 假设你的数据框名为df,新统计列命名为origin_count df <- df %>% group_by(`Origin Station`) %>% # 列名含空格,需用反引号包裹 mutate(origin_count = n()) %>% # n()自动统计每组的行数,也就是站点总出现次数 ungroup() # 取消分组状态,避免影响后续其他操作
方法2:用data.table(超大数据集首选,速度拉满)
如果你的数据量真的大到离谱(百万级甚至更多行),data.table的内存效率和运算速度会比dplyr更出色:
- 安装并加载data.table包(
install.packages("data.table")) - 转格式后直接完成分组统计:
library(data.table) # 将普通数据框转为data.table格式(也可以直接用fread()读取原始数据,效率更高) setDT(df) # 添加新列,.N是data.table内置变量,代表每组的行数 df[, origin_count := .N, by = `Origin Station`]
快速验证结果
你可以挑个目标站点(比如"14 Street-Union Sq")检查是否符合预期:
# dplyr方式筛选验证 df %>% filter(`Origin Station` == "14 Street-Union Sq") %>% select(`Origin Station`, origin_count) # data.table方式筛选验证 df[`Origin Station` == "14 Street-Union Sq", .(`Origin Station`, origin_count)]
所有该站点的记录都会显示同一个总出现次数,完全满足你的需求。
内容的提问来源于stack exchange,提问作者buckeye2114
相关产品推荐
相关产品推荐

