R 语言教程 – STEEMIT微信群有多少钱?


R-studio R 语言教程 - STEEMIT微信群有多少钱? I.T. SteemIt 程序设计

R-studio

当前, 微信群名单一共有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语言教程

GD Star Rating
loading...
本文一共 389 个汉字, 你数一下对不对.
R 语言教程 – STEEMIT微信群有多少钱?. (AMP 移动加速版本)
上一篇: R 教程之 怎么样连接到 STEEMSQL 数据库
下一篇: 培养孩子画画好处多多 The Kid's Drawings

扫描二维码,分享本文到微信朋友圈
0ba7bfe1b402b5afd860a6f3d59f5fb4 R 语言教程 - STEEMIT微信群有多少钱? I.T. SteemIt 程序设计

评论