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

在R中如何合并数据框对应行以按城市统计酒店总数量

R按城市合并行并统计酒店总数的实现方案

首先构造初始数据框:

df <- data.frame(
  Streets = c("Muscow tweede","Muscow NDSM", "kazan Bo", "Kazan Ca"),
  Hotels = c(5,9,4,3)
)

核心思路是先从街道字段中提取统一格式的城市名,再按城市分组对酒店数求和,以下是两种常用实现方式:

方法1:基础R实现

无需安装额外依赖,直接用基础函数完成:

# 提取街道首单词作为城市名,统一首字母大写避免大小写不匹配问题
df$city <- gsub("^(\\w+) .*", "\\U\\1", df$Streets, perl = TRUE)
# 按城市分组聚合酒店总数
aggregate(Hotels ~ city, data = df, FUN = sum)

输出结果:

city Hotels
1  Kazan      7
2 Muscow     14

方法2:tidyverse生态实现

使用dplyr+stringr的语法更易读,适合复杂数据处理场景:

library(dplyr)
library(stringr)

df %>%
  # 提取首单词作为城市名,统一首字母大写
  mutate(city = str_to_title(str_extract(Streets, "^\\w+"))) %>%
  # 按城市分组求和
  group_by(city) %>%
  summarise(total_hotels = sum(Hotels))

扩展:街道命名无规律场景的解决方案

如果街道名没有统一的「城市名在前」规则,可以自定义映射表匹配城市,灵活性更高:

# 自定义街道-城市映射关系
city_mapping <- c(
  "Muscow tweede" = "Muscow",
  "Muscow NDSM" = "Muscow",
  "kazan Bo" = "Kazan",
  "Kazan Ca" = "Kazan"
)
df$city <- city_mapping[as.character(df$Streets)]
# 后续按常规方法聚合即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:15:03