简单分组汇总

【问题】

I have a CSV file with thoose values

#BOF
userID;gender;movieID;rating
1;m;100;50
1;m;101;100
1;m;102;0
2;f;100;100
2;f;101;80
3;m;104;70
4;m;104;80
5;f;100;75
#EOF

I want to know how many movies does each user rate? Assume that there are hundred thousands of users. I tried to coded it in Eclipse for Java. Used

while ((strLine = br.readLine()) != null)   {

            String[] strings = strLine.split(";");

but then stopped. I am new at this so probably looks easy, but not for me..yet:=)

【回答】

JAVA缺乏相应的函数,直接实现分组汇总很麻烦,建议SPL辅助:

A
1=file("d:\\source.csv").read@n()
2=A1.to(2,A1.len()-1)
3=A2.concat("\n")
4=A3.import@t(;";")
5=A4.groups(userID;count(movieID))

A1: 读取source.csv中的内容, 返回成串序列,每行作为一个成员。

A2: 读取A1中第2行到倒数第2行的内容。

A3: 将序列成员以分隔符“\n”分隔拼成一个字符串。

A4: 用字符串中读出的内容作为记录并返回成序表。

A5: 按照userID进行分组聚合。

  这段代码可以方便地集成进Java,参考Java 如何调用 SPL 脚本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值