使用dplyr实现按年份的条件计数与资金汇总问题求助
按年份分组统计指定资产数量与资金汇总
数据集构造
df <- data.frame(year = c(2018, 2018, 2018, 2019, 2019), navfund = c(2000, 1000, 1200, 1100, 2000), Asset = c('s', 'f', 's', 'h', 's'))
需求
按年份分组,完成两个统计:
- 每年中
Asset为's'的记录数量 - 每年
navfund的汇总值
原代码问题分析
你提供的代码存在几处语法和逻辑错误:
- R对大小写敏感,原数据集列名为
year,代码里误写为Year,且group_by后多了多余逗号 summarise内语法混乱,将两个统计项错误嵌套在n_distinct中,正确做法是分开定义统计字段- 判断
Asset是否为's'时,用了赋值符号=而非比较符号==,且原数据中是小写's',代码里写了大写"S",会导致统计结果为0 - 代码末尾缺少闭合括号,导致语法不完整
- 不需要
n_distinct(navfund),需求是汇总值,应该用sum(navfund)
正确代码
library(dplyr) df %>% group_by(year) %>% summarise( count_asset_s = sum(Asset == 's'), # 统计每年Asset为's'的数量 total_navfund = sum(navfund) # 计算每年navfund的总和 )
运行结果
# A tibble: 2 × 3 year count_asset_s total_navfund <dbl> <int> <dbl> 1 2018 2 4200 2 2019 1 3100
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

