1. 数据读取及分析

 

使用文本数据 meteorolog.txt 存储的气象数据,根据每日平均气温 TEMP,每日最高气温 MAX 和每日最低气温 MIX,(1)计算 BAODING 站每个月的平均气温,最高和最低气温(2)查询所有观测记录中哪些数据中的最低气温低于 BEIJING 的全年最低气温;(3)查询日平均气温最高的 5 条数据。

参考答案:

解答:

A
1 =file(“meteorolog.txt”).import@t()
2 =A1.select(STATION:“BAODING”).groups@n(month(DATE):Month;round(avg(TEMP),2): AVGTEMP, max(MAX):MAX, min(MIN):MIN)
3 =A1.select(STATION:“BEIJING”).min(MIN)
4 =A1.select(MIN<A3)
5 =A1.top(5, -TEMP, ~)

比较基础的使用,A1 从文本文件中读取序表,@t 选项设置文件首行为标题。这里的 f.import()函数,也可以改为用 T(fn) 函数,如 A1 中的代码可以修改为 =T(“meteorolog.txt”),T() 函数将根据扩展名自动识别不同的文件,将其读取为序表。A2 选取出所需站点的数据后,用 groups 函数按照月份分组,同时统计每个分组中的平均温度和最高、最低温度;由于月份值和分组号是对应的,因此可以用 groups@n 直接指定分组号来提升性能。A3 中用 A2 中的结果得到 BEIJING 观测站记录的全年最低温度如下:

A4 进一步查询所有数据中最低温度比其更低的观测记录。

A5 获得日平均气温最高的 5 条记录,由于需要从高到低降序排序,因此 TEMP 前加了负号,top 函数中,添加最后的参数 ~ 后,将返回日平均气温最高的整条记录,而非单纯的气温值。