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

使用lag()后字段消失?ACCEPTED等变量丢失原因咨询

问题原因解析

你的代码里变量消失的核心原因是**summarize函数的本质就是做聚合精简**,这是dplyr包的既定设计:

  • 当你用group_by(BINS)分组后,summarize只会保留分组列(也就是BINS),以及你在函数里明确定义的聚合计算列(这里的Lambda1)
  • 原数据里的ACCEPTED和其他变量,因为没有被纳入任何聚合操作(比如sum、mean这类),会被直接丢弃,.groups = "drop"只是取消分组状态,和变量丢失没关系
  • 后面的mutate和View都是基于summarize输出的精简数据框操作,自然看不到原变量
实用优化思路

如果想在不丢失原变量的前提下完成计算,有两种更直接的方式:

  • 用mutate替代summarize:如果需要保留原数据的所有行,同时添加聚合结果,把summarize换成mutate就行,这样所有原变量都会保留,比如:
    DA %>% group_by(BINS) %>% mutate(Lambda1 = sum(ACCEPTED)) %>% mutate(Lambda = lag(Lambda1)) %>% ungroup() %>% View
    
  • 规范关联原数据:就是你已经用的方法,把聚合后的结果和原数据框通过BINS列关联,写法可以更清晰:
    agg_result <- DA %>% group_by(BINS) %>% summarize(Lambda1 = sum(ACCEPTED), .groups = "drop") %>% mutate(Lambda = lag(Lambda1))
    DA %>% left_join(agg_result, by = "BINS") %>% View
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:20:27