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

在R语言中拆分复杂City列并补全Milwaukee缺失数据的方法

解决方案:拆分城市列并补全缺失数据

使用tidyverse工具链可以高效完成需求,以下是最简实现代码:

library(tidyverse)

# 原始数据
df1 <- tibble::tribble(~City,   ~Population,
"United Kingdom > Leeds",   1500000,
"Spain > Las Palmas de Gran Canaria",   200000,
"Canada > Nanaimo, BC", 150000,
"Canada > Montreal",    250000,
"United States > Minneapolis, MN",  700000,
"United States > Milwaukee, WI",    NA,
"United States > Milwaukee",    400000)

# 数据清洗流程
df_cleaned <- df1 %>%
  # 拆分国家与城市(含州)部分
  separate(City, into = c("Country", "City_State"), sep = " > ") %>%
  # 拆分城市与州,无对应州时填充NA
  separate(City_State, into = c("City", "State"), sep = ", ", fill = "right") %>%
  # 按国家+城市分组,补全缺失的州和人口数据
  group_by(Country, City) %>%
  mutate(
    State = first(na.omit(State)),
    Population = first(na.omit(Population))
  ) %>%
  ungroup() %>%
  # 可选:去除重复行
  distinct()

代码说明

  1. 拆分列:
    • 先用separate按" > "将City列拆分为Country和City_State(城市+州的组合字符串)。
    • 再对City_State按", "拆分,通过fill = "right"让无州信息的行自动给State列填充NA。
  2. 补全缺失值:
    • 按Country和City分组,确保处理的是同一城市的记录。
    • 用first(na.omit(xxx))提取组内第一个非NA值,统一填充该组的缺失数据——既补全了Milwaukee的State为WI,也把其NA的Population替换为400000。
  3. 去重(可选):最后用distinct()去除重复的城市记录,得到唯一的清洗后数据集。

处理后的最终数据集示例:

CountryCityStatePopulation
United KingdomLeedsNA1500000
SpainLas Palmas de Gran CanariaNA200000
CanadaNanaimoBC150000
CanadaMontrealNA250000
United StatesMinneapolisMN700000
United StatesMilwaukeeWI400000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:55:18