You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R语言统计安大略省各城市2015-2017年图书馆数量的技术求助

安大略省各城市历年图书馆数量统计方案

前提修正:为合并数据集添加年份标识

原合并代码未给各年份数据添加区分标识,导致无法按年份统计。先修正合并代码,为每个数据集补充年份列后再合并:

# 读取各年份的图书馆数据集
data_2017 <- read.csv("Downloads/2017.csv")
data_2016 <- read.csv("Downloads/2016.csv")
data_2015 <- read.csv("Downloads/2015.csv")

# 为每个数据集添加年份列,用于后续区分
data_2017$year <- 2017
data_2016$year <- 2016
data_2015$year <- 2015

# 提取三个数据集的共同列并合并
common_columns <- Reduce(intersect, list(colnames(data_2017), colnames(data_2016), colnames(data_2015)))
data_combined <- rbind(
  subset(data_2017, select = common_columns),
  subset(data_2016, select = common_columns),
  subset(data_2015, select = common_columns)
)

# 保存带年份标识的合并数据集
write.csv(data_combined, "Downloads/data_combined.csv", row.names = FALSE)

生成统计数据框(两种实现方式)

以下代码将生成以城市名为行标题、2015/2016/2017为列标题的数据框,统计各城市对应年份的图书馆数量。

方式一:使用Base R实现

# 用table函数统计城市-年份的图书馆数量
count_table <- table(data_combined$city, data_combined$year)

# 转换为数据框并调整列顺序
library_count_df <- as.data.frame.matrix(count_table)
library_count_df <- library_count_df[, c("2015", "2016", "2017")]

方式二:使用tidyverse工具包实现(更灵活)

# 加载所需包
library(dplyr)
library(tidyr)

# 分组统计+转换宽格式
library_count_df <- data_combined %>%
  group_by(city, year) %>%
  summarise(library_count = n(), .groups = "drop") %>%
  pivot_wider(names_from = year, values_from = library_count, values_fill = 0) %>%
  column_to_rownames(var = "city") %>%
  select(c(2015, 2016, 2017)) # 确保列顺序符合要求

注意事项

  • 请确保数据集中代表「城市」的列名为city,若实际列名不同(如City或Municipality),需将代码中的city替换为对应列名。
  • values_fill = 0表示若某城市在某年份无图书馆记录,将填充数值0,可根据需求调整该参数。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:48:17