我有一个非常大的数据集(> 100 万行),其中需要计算同一天的所有百分位数(例如,所有 1 月 1 日,所有 1 月 2 日,...,所有 12 月 31 日)。有很多行相同的年月日的数据不同。以下是数据示例:
Year Month Day A B C D
2007 Jan 1 1 2 3 4
2007 Jan 1 5 6 7 8
2007 Feb 1 1 2 3 4
2007 Feb 1 5 6 7 8
.
.
2010 Dec 30 1 2 3 4
2010 Dec 30 5 6 7 8
2010 Dec 31 1 2 3 4
2010 Dec 31 5 6 7 8
因此,要计算 1 月 1 日的第 95 个百分位数,需要包括所有年份(例如 2007-2010)和所有列(A、B、C 和 D)的所有 1 月 1 日。然后对所有 1 月 2 日、1 月 3 日、...、12 月 30 日和 12 月 31 日执行此操作。这可以通过使用嵌套 if 语句在 Excel 中的小型数据集轻松完成;例如,={PERCENTILE(IF(月($B$2:$B$1000000)="Jan",IF(日($C$2:$C$1000000)="1",$D$2:$G$1000000)), 95%)}
然后可以将百分位数添加到仅包含月份和日期的新数据表中:
Month Day P95 P05
Jan 1
Jan 2
Jan 3
.
.
Dec 30
Dec 31
然后使用百分位数,我需要评估列名 A、B、C 和 D 中各自日期(例如,1 月 1 日)的每个数据值是否大于 P95 或小于 P05。然后可以将新列添加到包含 1 或 0 的第一个数据表(如果大于或小于百分位数,则为 1,如果不大于或小于百分位数,则为 0):
Year Month Day A B C D A05 B05 C05 D05 A95 B95 C95 D95
2007 Jan 1 1 2 3 4 1 0 0 0 0 0 0 0
2007 Jan 1 5 6 7 8 0 0 0 0 0 0 1 1
.
.
2010 Dec 31 5 6 7 8 0 0 0 0 0 0 0 1