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]