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

在R中汇总相同国家年份观测值并生成二分类事件指示变量

R实现按国家年份分组聚合二分类变量的方案

核心逻辑:按Country和Time两个字段分组后,对目标二分类变量取最大值即可——只要分组内出现过1,最大值就是1,全为0则最大值为0,完全匹配需求。


方法1:使用tidyverse系列的dplyr包(主流常用写法)

# 加载依赖包
library(dplyr)

# 构造示例数据,你可以替换为自己的实际数据集
df <- tibble(
  Country = c("A","A","B","C","D","D","D","D"),
  Time = rep(2000, 8),
  Conflict = 1:8,
  `Bio Weapons` = c(0,0,1,0,1,0,0,1)
)

# 分组聚合得到结果
result <- df %>%
  # 指定分组维度
  group_by(Country, Time) %>%
  # 对目标变量取最大值,.groups="drop"是聚合后自动取消分组,避免后续操作报错
  summarise(`Bio Weapons` = max(`Bio Weapons`), .groups = "drop")

# 查看输出结果
print(result)

如果需要批量处理多个同类二分类变量,可以改用across语法:

result <- df %>%
  group_by(Country, Time) %>%
  # 括号内填写需要处理的变量名即可批量聚合
  summarise(across(c(Conflict, `Bio Weapons`), max), .groups = "drop")

方法2:使用Base R(无需安装额外依赖包)

用原生aggregate函数即可实现分组聚合:

# 构造示例数据
df <- data.frame(
  Country = c("A","A","B","C","D","D","D","D"),
  Time = rep(2000, 8),
  Conflict = 1:8,
  Bio_Weapons = c(0,0,1,0,1,0,0,1)
)

# 分组聚合,列名带空格需要用反引号包裹
result <- aggregate(Bio_Weapons ~ Country + Time, data = df, FUN = max)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 19:27:02