Langsam hält R Einzug in die Welt der Suchmaschinenoptimierung, und auch wenn R am Anfang etwas verwirrend sein mag (funktionale Programmierung anstatt prozedural), so kann man mit wenigen Zeilen Code coole Sachen bauen. Als Beispiel soll hier ein kostenloses SEO-Monitoring dienen, das natürlich kein bisschen mit Sistrix und Co mithalten kann, aber wenn man nur seine eigenen Rankings verfolgen will, dann ist dies eine tolle und vor allem kostenlose Lösung. [Weiterlesen…] ÜberKostenloses und automatisiertes SEO-Monitoring mit R und AWS
Data Science
mv: argument list too long – Millionen von Dateien verarbeiten
Aufgrund meiner Vergesslichkeit hatte ein cron job mehr als 3 Millionen Dateien in einem Verzeichnis angesammelt, die ich nun verarbeiten wollte. Damit mein Skript nicht tagelang daran arbeitet (mehr 60 GB an Daten!), sollten die Dateien in kleinere Häppchen verteilt werden. Leider kam mv nicht damit klar, es beschwerte sich mit “argument list too long”. Die Abhilfe schafft eine Kombination von Kommandozeilen-Befehlen:
find ordner1/ -name ‘2017-07*’ -exec mv {} ordner2 \;
Clustering mit Google Analytics und R
Manche Fragen lassen sich nicht so einfach oder auch gar nicht mit der Benutzeroberfläche von Google Analytics beantworten (das gilt übrigens auch für Adobe Analytics, Piwik, etc). Zwar bietet Google Analytics eine mächtige und einfach zu nutzende Funktionalität an, um Segmente oder Personas basierend auf Geräte, Akquisitionskanäle oder Browser manuell zu bilden und miteinander zu vergleichen, aber sobald es über diese Standardsegmente hinaus oder zu Kombinationen mehrerer Dimensionen geht, wird der Aufwand komplex. Oft genug wird dann auch einfach nur in den Daten “gestochert” und gehofft, dass man etwas Wertvolles findet. Genau hier kommen die Vorteile der Kombination von Google Analytics und R ins Spiel. Eine Möglichkeit, Google Analytics und R miteinander zu verbinden ist das R Package googleAnalyticsR von Mark Edmonson, das in diesem Artikel beispielhaft verwendet wird. [Weiterlesen…] ÜberClustering mit Google Analytics und R
Regression: Was darf eine gebrauchte Spiegelreflexkamera kosten?
Da gerade die Canon 5d Mark IV herausgekommen ist, wird auch die 5d Mark III erschwinglich. 1.500€ für maximal 30.000 Auslösungen wurde mir geraten, aber wenn man sich die angebotenen Kameras bei eBay und den einschlägigen Foren ansieht, dann scheint der Preis viel höher zu sein. Doch was ist der faire Preis? Mit ausreichend Daten kann dieser durch Regression ermittelt werden. [Weiterlesen…] ÜberRegression: Was darf eine gebrauchte Spiegelreflexkamera kosten?
Mehr als einen Kern unter Mac OS X nutzen
Heutige Prozessoren haben meist mehr als einen Kern, aber die meisten Programme nutzen nur einen. Oft ist es egal, der Rechner ist auch so schnell genug. Aber dann kommt man manchmal in Bereiche, wo man sich ärgert, dass man nur einen Kern nutzen kann. Vor allem bei den UNIX-Befehlen, die als GNU-Version zum Teil mehrere Kerne ausnutzen können, langweilt sich ein Teil meiner Mac-CPU während der andere zu 100 Prozent ausgelastet ist. In meinem Beispiel geht es um eine Text-Datei mit 8.6 GigaByte (nicht MegaByte :-), die ich sortieren und verarbeiten muss. Was wäre, wenn man mehr als einen Kern nutzen könnte? [Weiterlesen…] ÜberMehr als einen Kern unter Mac OS X nutzen
Google-Analytics-Daten in R einlesen
11.01.13,"1,79"
12.01.13,"1,81"
13.01.13,"1,86"
14.01.13,"1,83"
15.01.13,"1,79"
> analytics <- read.table(file="analytics.csv", sep=",", dec=",", quote = "\"")
> analytics$V1 <- strptime(analytics$V1,format="%d.%m.%y")
> summary(analytics)
V1 V2
Min. :2013-01-11 00:00:00 Min. :1.000
1st Qu.:2013-12-19 06:00:00 1st Qu.:1.550
Median :2014-11-26 12:00:00 Median :1.630
Mean :2014-11-26 11:23:44 Mean :1.632
3rd Qu.:2015-11-03 18:00:00 3rd Qu.:1.710
Max. :2016-10-11 00:00:00 Max. :2.520
>
In letzter Zeit habe ich mir angewöhnt, read.table anstatt read.csv oder read.csv2 zu nutzen, denn ich kann mir den Unterschied zwischen den beiden eh nicht merken und welche Parameter darin true sind oder nicht, und sie sind nur vorformatierte Variationen von read.table.
So kann es passieren, dass man unhübsche Daten bekommt, an denen summary() kapituliert:
V1 V2
65.65796: 3 124.7975: 4
67.34629: 3 121.1097: 3
67.94061: 3 123.5503: 3
67.97769: 3 124.0167: 3
68.30287: 3 126.2769: 3
68.93456: 3 126.7902: 3
(Other) :21062 (Other) :21061
In diesem Fall liegt es einfach daran, dass der Header nicht mit eingelesen wurde. Ganz anders mit der Angabe:
> size
[/code]
[code]
> summary(size)
Height Weight
Min. :60.28 Min. : 78.57
1st Qu.:66.70 1st Qu.:119.31
Median :67.99 Median :127.20
Mean :67.99 Mean :127.09
3rd Qu.:69.27 3rd Qu.:134.88
Max. :75.15 Max. :170.92
>
Warum Social Search nicht funktioniert
Während Lycos iq-Mitkonzeper Oliver Wagner das Ausbleiben der Social Search-Revolution als Versäumnis sieht (damit aber nicht die reinen Social Search-Ansätze meint) und Robert Basic sogar die Social Bookmark-Dienste als Social Search Engines ansieht, ist eine allein auf Nutzerbewertungen basierende Social Search aufgrund seines Konzepts von vornherein für diejenigen gescheitert, die bereits tiefer in die Komplexität eines Suchalgorithmus geschaut haben. [Weiterlesen…] ÜberWarum Social Search nicht funktioniert