PowerQuery:按分组查找首尾记录并计算指标变化率
PowerQuery 计算个体指标时间变化率操作步骤
假设你的数据集包含:个体ID列(比如ID)、观测时间列(比如观测时间)、指标值列(比如指标值),按以下步骤操作:
1. 按个体分组
- 打开PowerQuery编辑器,选中原始数据,点击主页选项卡的「分组依据」按钮
- 分组依据选择你的个体ID列,新列名设为「分组数据」,操作选择「所有行」,点击确定
2. 添加自定义列计算变化率
- 点击添加列选项卡的「自定义列」,在弹出的编辑器里输入以下公式(记得替换成你实际的列名):
let 分组表 = [分组数据], 最早记录 = Table.First(分组表), 最晚记录 = Table.Last(分组表), 指标差 = 最晚记录[指标值] - 最早记录[指标值], 时间差 = Duration.TotalDays(最晚记录[观测时间] - 最早记录[观测时间]) // 可替换为TotalHours/TotalMinutes等 in 指标差 / 时间差- 时间单位说明:如果要按小时计算,把
Duration.TotalDays改成Duration.TotalHours,分钟就用Duration.TotalMinutes - 处理单条记录的情况:如果有个体只有1条观测记录,可在公式里加判断避免报错:
let 分组表 = [分组数据], 记录数 = Table.RowCount(分组表) in if 记录数 > 1 then let 最早记录 = Table.First(分组表), 最晚记录 = Table.Last(分组表), 指标差 = 最晚记录[指标值] - 最早记录[指标值], 时间差 = Duration.TotalDays(最晚记录[观测时间] - 最早记录[观测时间]) in 指标差 / 时间差 else null // 也可以填0,根据你的需求调整
- 时间单位说明:如果要按小时计算,把
3. 整理最终结果
- 选中「分组数据」列,右键删除
- 给自定义列重命名,比如改成「指标日均变化率」(根据你用的时间单位调整名称)
前置检查
- 确认观测时间列是日期/时间类型:如果不是,选中该列,点击转换选项卡的「数据类型」,选择「日期/时间」
内容的提问来源于stack exchange,提问作者Ralph Asher
相关产品推荐
相关产品推荐

