[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [metrics-web/master] Add monthly aggregates to new user estimates.



commit e2962c7876c50da134b286736cff50e57bb5759e
Author: Karsten Loesing <karsten.loesing@xxxxxxx>
Date:   Mon Sep 16 16:53:43 2013 +0200

    Add monthly aggregates to new user estimates.
---
 rserve/csv.R                                       |   28 ++++++++++++++++++++
 .../ernie/web/graphs/RObjectGenerator.java         |    2 ++
 web/WEB-INF/users.jsp                              |    5 ++++
 3 files changed, 35 insertions(+)

diff --git a/rserve/csv.R b/rserve/csv.R
index efb4486..531e73f 100644
--- a/rserve/csv.R
+++ b/rserve/csv.R
@@ -300,3 +300,31 @@ export_userstats <- function(path) {
       quote = FALSE, row.names = FALSE)
 }
 
+help_export_monthly_userstats <- function(path, aggr_fun) {
+  u <- read.csv(paste("/srv/metrics.torproject.org/task-8462-graphs/",
+    "task-8462/userstats.csv", sep = ""),
+    stringsAsFactors = FALSE)
+  u <- u[u$country != '' & u$transport == '' & u$version == '',
+         c("date", "country", "users")]
+  u <- aggregate(list(users = u$users),
+                      by = list(date = u$date, country = u$country), sum)
+  u <- aggregate(list(users = u$users),
+                      by = list(country = u$country,
+                                month = substr(u$date, 1, 7)), aggr_fun)
+  u <- rbind(u, data.frame(country = "zy",
+                aggregate(list(users = u$users),
+                          by = list(month = u$month), sum)))
+  u <- cast(u, country ~ month, value = "users")
+  u[u$country == "zy", "country"] <- "all"
+  u[, 2:length(u)] <- floor(u[, 2:length(u)])
+  write.csv(u, path, quote = FALSE, row.names = FALSE)
+}
+
+export_monthly_userstats_peak <- function(path) {
+  help_export_monthly_userstats(path, max)
+}
+
+export_monthly_userstats_average <- function(path) {
+  help_export_monthly_userstats(path, mean)
+}
+
diff --git a/src/org/torproject/ernie/web/graphs/RObjectGenerator.java b/src/org/torproject/ernie/web/graphs/RObjectGenerator.java
index a927578..84d61c6 100644
--- a/src/org/torproject/ernie/web/graphs/RObjectGenerator.java
+++ b/src/org/torproject/ernie/web/graphs/RObjectGenerator.java
@@ -67,6 +67,8 @@ public class RObjectGenerator implements ServletContextListener {
     this.availableCsvFiles.add("dirbytes");
     this.availableCsvFiles.add("monthly-users-average");
     this.availableCsvFiles.add("monthly-users-peak");
+    this.availableCsvFiles.add("monthly-userstats-average");
+    this.availableCsvFiles.add("monthly-userstats-peak");
     this.availableCsvFiles.add("networksize");
     this.availableCsvFiles.add("platforms");
     this.availableCsvFiles.add("relaycountries");
diff --git a/web/WEB-INF/users.jsp b/web/WEB-INF/users.jsp
index 10b630a..2a7bede 100644
--- a/web/WEB-INF/users.jsp
+++ b/web/WEB-INF/users.jsp
@@ -448,6 +448,11 @@ IPv6 numbers will become more accurate over time.</font>
 
 <p><a href="csv/userstats.csv">CSV</a> file containing new user
 estimates (BETA).</p>
+<p><a href="csv/monthly-userstats-peak.csv">CSV</a> file containing peak
+daily Tor users (direct and bridge) per month by country (BETA).</p>
+<p><a href="csv/monthly-userstats-average.csv">CSV</a> file containing
+average daily Tor users (direct and bridge) per month by country
+(BETA).</p>
 <br>
 
     </div>



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits