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

R语言数据集按Gemeinde分组,基于国家分类求和的实现问题

R语言数据分组统计解决方案

原始数据集

Gemeinde <- c("Adliswil", "Adliswil", "Adliswil", "Adliswil", "Adliswil","Adlikon", "Adlikon", "Adlikon", "Adlikon", "Adlikon")
Country <- c("Schweiz", "Deutschland", "Frankreich", "Türkei", "China","Schweiz", "Deutschland", "Frankreich", "Türkei", "China")
Count <- c(23, 41, 32, 58, 26,23, 41, 32, 58, 26)
df <- data.frame(Gemeinde, Country, Count)
print(df)

需求说明

将Country字段中属于"Frankreich"、"Deutschland"、"Schweiz"的记录归为瑞士类,其余归为外国类;按Gemeinde字段分组后,分别统计两类的Count字段总和。

原代码问题

原代码存在多处错误:

  • 变量名不匹配:原数据集使用df、Count、Country,但代码里误用了country_count、Anzahl、Staatsangehörigkeit
  • 条件逻辑错误:用== "Frankreich & Deutschland & Schweiz"无法匹配三个目标国家,需用%in%判断是否属于指定列表
  • 外国类求和逻辑错误:未排除瑞士类数据,导致总和计算错误

正确实现代码

library(dplyr)

# 新增分类标记列
df <- df %>%
  mutate(Group = ifelse(Country %in% c("Frankreich", "Deutschland", "Schweiz"), 
                        "瑞士类", "外国类"))

# 按Gemeinde分组统计两类总和
result <- df %>%
  group_by(Gemeinde) %>%
  summarize(
    sumSwiss = sum(Count[Group == "瑞士类"]),
    sumForeign = sum(Count[Group == "外国类"])
  )

print(result)

输出结果

运行代码后得到如下结果:

# A tibble: 2 × 3
  Gemeinde sumSwiss sumForeign
  <chr>       <dbl>      <dbl>
1 Adlikon        96         84
2 Adliswil       96         84

若需转换为普通data.frame格式,可添加as.data.frame():

result_df <- as.data.frame(result)
print(result_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:05:19