在Excel Power Query中如何实现按照Dea 分组的来计算线性回归=INDEX(LINEST(H6:H15,(G6:G15)^{1,2,3}),1,1) 如何用DAX实现
时间: 2024-10-15 10:15:35 浏览: 27
在Excel Power Query中,如果你想按Dea分组并对每个组内的数据进行线性回归,首先你需要创建一个数据透视表或者使用Power Query的Grouping和M-functions。这里假设你的数据源是在H6:G15范围内,Dea字段在某个列。以下是步骤:
1. **打开Power Query编辑器**:
- 右键点击工作表,选择"从表格"或"从数据源"开始数据探索。
- 将你的数据导入到查询编辑器中。
2. **分组并计算线性回归**:
- 添加一个新的计算列,使用`Mapply`函数来进行分组:
```sql
=Mapply(
LINEST,
{H6:H15}, {G6:G15} ^ {1, 2, 3},
List.Distinct(Col_Dea),
List.Distinct(Col_Date),
List.Distinct(Col_Weight),
List.Distinct(Col_Sample)
)
```
- `Col_Dea`、`Col_Date`、`Col_Weight`和`Col_Sample`分别替换为你的Dea、日期、权重或其他可能影响线性的列名。
3. **提取斜率**:
- 通过索引来选取第一行(即斜率):
```sql
=INDEX(Table, each _, 1)
```
- 将此表达式添加到新的列中,并命名为"Regression_Slope"或者其他你喜欢的名字。
注意,由于Power Query不直接支持DAX(数据模型表达语言),你需要将以上步骤转换成DAX,但这通常是在Power BI的工作区里完成。一旦在Power Query中准备好数据,你可以导出到报表或数据模型部分,然后在那里使用DAX公式。
在Power BI Desktop中,你可以创建一个新的计算列,类似上述的Mapply和INDEX,但在DAX环境中表达:
```dax
Regression_Slope =
VAR regressionResults =
CALCULATE(
LINEST('Table'[H], 'Table'[G] ^ {1, 2, 3},
ALL('Table'[Dea]),
ALL('Table'[Date]),
ALL('Table'[Weight]),
ALL('Table'[Sample])),
ALLEXCEPT('Table', 'Table'[Dea])
)
RETURN INDEX(regressionResults, 0, 1)
```
在这里,'Table'应该替换为你的实际表名。
阅读全文