Breakout detection in R

„Our main motivation behind creating the package has been to develop a technique to detect breakouts which are robust, from a statistical standpoint, in the presence of anomalies. The BreakoutDetection package can be used in wide variety of contexts. For example, detecting breakout in user engagement post an A/B test, detecting behavioral change, or for problems in econometrics, financial engineering, political and social sciences.“

Daten von R auf SQL-Server speichern

Zuerst Loading Data and Basic Formatting in R lesen. Folgendes Skript sammelt wiederholt ein paar Grundlagen und speichert am Ende die Daten per RODBC auf einem SQL-Server. Die Tabelle auf dem SQL-Server wird vorausgesetzt.

[code lang=“scilab“]rm(list=ls()) # alles löschen

setwd(„C:/Entwicklung/Projekte/BurDocs/r/demo/“)

source(„../config.R“)
source(„../utils.R“)

library(„RODBC“, lib.loc=libpath)

# ein Vektor vom Typ „integer“
# Zahlen: 12 bis 18
a=12:18

# ein Vektor vom Typ „double“
b=c(2,4,6,8)

# ein Vektor vom Typ „character“
# Großbuchstaben: „M“, „A“, „I“, „K“
c=LETTERS[c(13,1,9,11)]

# einen leeren Data-Frame erstellen
df=data.frame(‚Bezeichnung’=as.character(), ‚Wert’=as.character(), stringsAsFactors=FALSE)
# noch einen Data-Frame anlegen; alle Spalten müssen gleiche Anzahl Zeilen
df=data.frame(aaa=a[1:4],bbb=b,ccc=c)

# Inhalte und Typen erkunden
typeof(a)
length(a)
class(b)
names(df)
is.data.frame(df)
is.factor(df$ccc)
levels(df$ccc)
str(df)
str(df$ccc)
nrow(df)
ncol(df)
df[1] # Werte von Spalte 1
df[‚aaa‘] # entspricht df[1]
df[3,2] # Wert von Reihe + Spalte
df[3,] # alle Spalten der dritten Reihe
df$aaa
df$aaa[2] # vom Vektor der zweite Wert

colnames(df) <- c('aaa','b','ccc') # Spaltenname umbenennen colnames(df)[2] = 'bbb' # zweite Spalte umbenennen rownames(df) # Namen für die Zeilen df <- cbind(df, "ddd"= 100-df$bbb) # eine Spalte hinzufügen df <- rbind(df, list(16, 10, 'M', 30)) # eine Zeile hinzufügen # ...Spalte ddd muss Teil des Faktors sein (siehe unten) df[order(df$ddd),] # Tabelle sortieren subset(df,df$bbb>4) # Tabelle filtern

# Beispiel: die b-Werte der Reihen, die b > 4
# – einen logischen Vektor erstellen
# – den Vektor für eine Auswahl verwenden
# – nur die b-Werte anzeigen
L = df$bbb > 4
df[L,]
df[L,]$bbb

# Beispiel: Duplikate in Tabelle suchen
# – die Tabelle df verdoppeln, durch anhängen
# – für jede verdoppelte Zeile wird TRUE geliefert
# – mit which die Zeilennummern der Duplikate holen
# – mit dem ! die Ausgabe umkehren
# – mit unique die eindeutigen Zeilen filtern
# – dfdf dauerhaft löschen
dfdf <- rbind(df,df) duplicated(dfdf) which(duplicated(dfdf)) which(!duplicated(dfdf)) unique(dfdf) rm(dfdf) # Beispiel: Tabelle gruppieren # - gruppiere die Spalte ccc # - summiere die Spalte bbb tapply(df$bbb,df$ccc,sum) # Beispiel: neue Werte zum Faktor in Spalte ccc hinzufügen # - Buchstabe "a" hinzufügen # - Buchstaben "ndres" hinzufügen df$ccc <- factor(df$ccc, levels = c(levels(df$ccc), 'a')) values = letters[c(14,4,18,5,19)] df$ccc <- factor(df$ccc, levels = c(levels(df$ccc), values)) df <- rbind(df, list(18, 12, 'a', 60)) # Beispiel: eine Zeile komplett löschen # - alle Zeilen mit "M" suchen # - Zeilennamen von M-Zeilen holen # - Zeilennamen in Nummern wandeln # - nur 2-te Nummer verwenden # - Ergebnis umkehren # - Zeilen von Tabelle holen df <- df[-as.numeric(rownames(df[df$ccc == 'M',]))[2],] # Beispiel: Tabelle auf SQL-Server speichern conn <- odbcConnect("MAIK_x64") odbcClearError(conn) sqlSave(conn, df, "demo_r", rownames=FALSE, safer=FALSE, append=FALSE) close(conn)[/code]