kdb - 从KDB中导入的CSV按月分类日期值?
问题描述
我有一个.csv
包含以下示例架构的文件:
item, date
10,2015.01.01
2,2015.02.01
3,2015.01.15
4,2015.03.01
5,2015.03.01
20,2015.03.01
11,2015.02.01
23,2015.01.21
13,2015.01.31
我希望将这些项目分类为年/月/日,即2015-01, 2015-02, 2015-03
. 我尝试了以下行,它似乎不起作用:
select item by 1 xbar date.month from table
还尝试使用新列进行更新:
update column: `mm$date from table
似乎导入.csv
文件会将字段转换为符号。我需要先明确地将其转换回日期类型吗?
我如何打印出一个按特定时间/日期标准分箱的值的表格?
解决方案
要在读取 csv 时应用类型,请使用0:
如下:
q)("ID";enlist ",") 0: `:test.csv
item date
---------------
10 2015.01.01
2 2015.02.01
3 2015.01.15
4 2015.03.01
5 2015.03.01
20 2015.03.01
11 2015.02.01
23 2015.01.21
13 2015.01.31
左侧参数是一个包含两项的列表,"ID"
指定每列的类型(整数、日期)和","
指定分隔符(并enlist
指示存在列标题)。
然后数据可以按月分桶:
q)select item by 1 xbar `month$date from ("ID";enlist ",") 0: `:test.csv
date | item
-------| -----------
2015.01| 10 3 23 13i
2015.02| 2 11i
2015.03| 4 5 20i
或者,如果您想要自定义大小的存储桶,您可以使用bin
日期列表作为存储桶分隔符。这将给出一个整数值,指示每个日期属于哪个 bin,然后您可以使用字典来命名存储桶:
q)b:2015.01.01 2015.02.01 2015.03.01
q)d:(0 1 2)!`month$b
q)select item by d b bin date from ("ID";enlist ",") 0: `:test.csv
date | item
-------| -----------
2015.01| 10 3 23 13i
2015.02| 2 11i
2015.03| 4 5 20i
注意:将为低于第一个分隔符的值bin
赋值。-1
使用binr
将开始计数0
:
q)b bin 2014.12.31
-1
q)b binr 2014.12.31
0
推荐阅读
- angular - 如果 DOM 无论如何都将被删除,是否需要销毁 Angular 组件的 Dragula 实例?
- javascript - 如何使用 expressJS 处理 Fetch api formData 提交
- python - Pandas 中超过 2 列数据框的最大元素
- html - 宽度为 100vw 高度为 100vh 的画布必须有显示块
- android - Android Firebase CloudMessaging 在应用程序关闭时不加载 URL 它在单击时加载默认页面
- laravel - Vue js Laravel axios POST 500 内部服务器错误
- java - 如何在 Java 中将 HttpStatus 代码转换为 int?
- javascript - 从 v-chip-groups 获取多个选定值
- mocking - 使用 axios 构造函数时模拟 axios
- nginx - 从子文件夹到子域的代理的 nginx 配置