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.
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)] # ein Data-Frame # 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) |