如果您能对我使用 Excel 处理数据集提供帮助,我将非常感激。
我有一个大数据表,其中列有 4 个变量,行有多个案例。
部门变量显示案例属于哪种部门类型,例如 A01、A02....C01 等。还有一个国家变量,描述数据来源和描述数据收集年份。
M_EUR 是一个描述花了多少钱的数值变量;它也有很多 NA,表示没有数值数据。
以下是数据集的较小版本:
我想要计算 M_EUR 变量对于每个部门有多少个数值。因此,对于上面显示的数据集,Excel 将返回 M_Eur 对于部门 A01 有 8 个数值。
如果代码能够快速轻松地在许多领域重复使用,那就最好了
我知道 StackExchange 上有一个关于 R 的类似主题,但我无法确定应该使用哪个函数,因为我仍然是游戏中的新手。(以下是讨论的链接:https://stackoverflow.com/questions/3505701/grouping-functions-tapply-by-aggregate-and-the-apply-family)。
答案1
答案2
由于您正在处理庞大的数据集,因此我想建议采用两步解决方案来解决该问题。
步骤1:
- 总结部门列,创建唯一的部门列表。
- 它避免从键盘输入扇区的值,也节省了时间。
单元格中的数组公式
E39
:{=IFERROR(INDEX($A$39:$A$65, MATCH(0,COUNTIF($E$38:E38, $A$39:$A$65), 0)),"")}
完成公式Ctrl+Shift+Enter。
第2步:
- 计算列中对应的数字
D
。 单元格中的公式
F39
:=IF(SUMPRODUCT(--(A$39:A$65=E39)*(D$39:D$65<>"NA"))=0,"",SUMPRODUCT(--(A$39:A$65=E39)*(D$39:D$65<>"NA")))
注意:
- 我已使用
IF
withSUMPRODUCT
来替换0
withBlanks
。 您也可以使用此公式将零替换为空白。
=TEXT(SUMPRODUCT(--(A$39:A$65=E39)*(D$39:D$65<>"NA")),"0;-0;;@")
如果你希望数据集定期更新,那么最好使用动态命名范围为了部门&欧洲列。
根据需要调整公式中的单元格引用。