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

R语言按条件对列求和统计美国各县收支总量报错解决求助

报错原因
  • dplyr管道语法使用错误:%>%会将左侧的处理结果作为第一个参数传入右侧函数,你在group_by(FIPS)后直接调用sum(),相当于把分组后的整个数据表传入sum(),而sum()仅支持全数值结构的输入,数据表包含非数值列(比如Type、FIPS编码列都是字符型)就会触发该报错。
  • 统计逻辑错误:你在sum()内部重新引用了原始全量数据集county2013,完全没有用到分组后的子集,就算不报错也无法得到按FIPS分组的统计结果,只会返回全表符合条件的总金额。
  • 筛选逻辑冗余:重复罗列了多个相同的Type编码,不仅可读性差也容易出错。
解决代码

首先确认你已经安装并加载dplyr包,再运行以下代码:

library(dplyr)

# 1. 定义支出类Type编码(已去重你罗列的所有编码)
expenditure_type <- c(
  'B01','B21','B22','B30','B42','B46','B50','B59','B79','B80','B89','B91','B92','B93','B94',
  'C21','C30','C42','C46','C50','C79','C80','C89','C91','C92','C93','C94',
  'D21','D30','D42','D46','D50','D79','D80','D89','D91','D92','D93','D94',
  'T01','T09','T10','T11','T12','T13','T14','T15','T16','T19','T20','T21','T22','T23','T24','T25','T27','T28','T29','T40','T41','T50','T51','T53','T99',
  'A01','A03','A09','A10','A12','A16','A18','A21','A36','A44','A45','A50','A56','A59','A60','A61','A80','A81','A87','A89','A90','A91','A92','A93','A94',
  'U01','U11','U20','U21','U30','U40','U41','U50','U95','U99',
  'X01','X02','X05','X08',
  'Y01','Y02','Y04','Y11','Y12','Y51','Y52'
)

# 2. 按FIPS分组统计总支出
county_exp <- county2013 %>%
  filter(Type %in% expenditure_type) %>%
  group_by(FIPS) %>%
  summarise(total_expenditures = sum(Flow, na.rm = TRUE))

# 3. 按FIPS分组统计总营收(请将下方revenue_type替换为你对应的营收类Type编码)
revenue_type <- c("营收类Type编码1", "营收类Type编码2")
county_rev <- county2013 %>%
  filter(Type %in% revenue_type) %>%
  group_by(FIPS) %>%
  summarise(total_revenue = sum(Flow, na.rm = TRUE))

# 4. 合并收支统计结果为同一张表
county_final <- left_join(county_exp, county_rev, by = "FIPS")
注意事项
  • 若需要把统计结果合并回原始明细数据表,可执行:county2013 <- left_join(county2013, county_final, by = "FIPS")
  • 运行前请确认Flow列为数值型,若为字符型请先转换:county2013$Flow <- as.numeric(county2013$Flow),转换前可先排查是否有非数值的异常字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:45:03