当前, 微信群名单一共有211人(没有上榜的请火速联系 [email protected] 好处多多, 你会懂的), 昨天, 我们讲了怎么在R语言里通过RODBC连接STEEMSQL数据库, 今天我们就来温故而知新, 介绍一个实用的例子: STEEMIT中文微信群一共有多少钱?
查询 @justyy 的帐号很简单, STEEMSQL是:
1 | select savings_balance, savings_sbd_balance, balance, sbd_balance from Accounts where name='justyy' |
select savings_balance, savings_sbd_balance, balance, sbd_balance from Accounts where name='justyy'
我们注意到了, 这些字段并不是数值, 因为还有单位, 这就无法直接在STEEMSQL里直接用聚类函数 sum 把它们相加起来.
我们需要先把成员列表读进来, 这个例表在 github 上, 如果你还没在列表里, 你也可以提交一个PR.
https://raw.githubusercontent.com/DoctorLai/steemit-wechat-group/master/members.txt
这是一个文本文件, 每一行就是一个STEEMIT 帐号ID, 我们在R语言里可以用 readLines 把文本数据读成数组.
url = "https://raw.githubusercontent.com/DoctorLai/steemit-wechat-group/master/members.txt" members = readLines(url)
然后, 通过类似 join 之类的方法, 来构造这个SQL.
sqlQuery(conn, str_c("select savings_balance, savings_sbd_balance, balance, sbd_balance from Accounts where name in ('", paste(members, collapse = "','"), "')"))
生成的SQL大概长这样……
1 | select savings_balance, savings_sbd_balance, balance, sbd_balance from Accounts where name in ('justyy', 'tumutanzi' ...) |
select savings_balance, savings_sbd_balance, balance, sbd_balance from Accounts where name in ('justyy', 'tumutanzi' ...)
把获取数据这块写成函数
getsbd = function(members) { conn <- odbcDriverConnect("Driver=SQL Server Native Client 11.0;Server=sql.steemsql.com;Database=DBSteem;Uid=steemit;Pwd=steemit") x <- sqlQuery(conn, str_c("select savings_balance, savings_sbd_balance, balance, sbd_balance from Accounts where name in ('", paste(members, collapse = "','"), "')")) close(conn) return(x) }
然后, arr = getsbd(members) 就会返回一个含有4个字段的数组 dim(arr) [1] 211 4, 接下来就好办了, 遍历每个字段数组, 然后相加.
sum_sbd = 0.0 sum_steem = 0.0 sum_sbd_saving = 0.0 sum_steem_saving = 0.0 for(money in arr[,4]) { x = unlist(str_split(money, " "))[1] sum_sbd = sum_sbd + as.numeric(x) } for(money in arr[,2]) { x = unlist(str_split(money, " "))[1] sum_sbd_saving = sum_sbd_saving + as.numeric(x) } for(money in arr[,3]) { x = unlist(str_split(money, " "))[1] sum_steem = sum_steem + as.numeric(x) } for(money in arr[,1]) { x = unlist(str_split(money, " "))[1] sum_steem_saving = sum_steem_saving + as.numeric(x) }
str_split 函数把数值和单位分开, 方便累计. 不多说了, 直接上结果:
print(paste("Total SBD = ", sum_sbd)) print(paste("Total SBD Savings = ", sum_sbd_saving)) print(paste("Total STEEM = ", sum_steem)) print(paste("Total STEEM Savings = ", sum_steem_saving)) [1] "Total SBD = 31739.145" [1] "Total SBD Savings = 597.972" [1] "Total STEEM = 16067.426" [1] "Total STEEM Savings = 0.01"
类似可以累计 VESTS 然后再计算SP, 不过较麻烦, 这里就不展开细节了.
英文: R Tutorial – How rich is SteemIt Wechat Group?
R语言教程
- R 语言教程 – 蒙特卡罗
- R 语言教程 – Sigmoid
- R 语言教程 – 错位排列
- R 语言教程 – 连接STEEMSQL 数据库
- R 语言教程 – STEEMIT 微信群有多少钱?
- R 语言教程 – STEEMIT 大鲸啥时候点赞的?
- R 语言教程 – 通过 RStudio 来快速连接SteemSQL
GD Star Rating
loading...
本文一共 389 个汉字, 你数一下对不对.loading...
上一篇: R 教程之 怎么样连接到 STEEMSQL 数据库
下一篇: 培养孩子画画好处多多 The Kid's Drawings
扫描二维码,分享本文到微信朋友圈