{"id":1577,"date":"2014-11-02T13:53:33","date_gmt":"2014-11-02T12:53:33","guid":{"rendered":"https:\/\/bob-team.de\/wordpress\/?p=1577"},"modified":"2015-08-17T10:42:51","modified_gmt":"2015-08-17T08:42:51","slug":"daten-von-r-auf-sql-server-speichern","status":"publish","type":"post","link":"https:\/\/bob-team.de\/wordpress\/2014\/11\/02\/daten-von-r-auf-sql-server-speichern\/","title":{"rendered":"Daten von R auf SQL-Server speichern"},"content":{"rendered":"<p>Zuerst <a href=\"http:\/\/flowingdata.com\/2015\/02\/18\/loading-data-and-basic-formatting-in-r\/\">Loading Data and Basic Formatting in R<\/a> 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.<\/p>\n<p>[code lang=&#8220;scilab&#8220;]rm(list=ls()) # alles l\u00f6schen<\/p>\n<p>setwd(&#8222;C:\/Entwicklung\/Projekte\/BurDocs\/r\/demo\/&#8220;)<\/p>\n<p>source(&#8222;..\/config.R&#8220;)<br \/>\nsource(&#8222;..\/utils.R&#8220;)<\/p>\n<p>library(&#8222;RODBC&#8220;, lib.loc=libpath)<\/p>\n<p># ein Vektor vom Typ &#8222;integer&#8220;<br \/>\n#    Zahlen: 12 bis 18<br \/>\na=12:18<\/p>\n<p># ein Vektor vom Typ &#8222;double&#8220;<br \/>\nb=c(2,4,6,8)<\/p>\n<p># ein Vektor vom Typ &#8222;character&#8220;<br \/>\n#    Gro\u00dfbuchstaben: &#8222;M&#8220;, &#8222;A&#8220;, &#8222;I&#8220;, &#8222;K&#8220;<br \/>\nc=LETTERS[c(13,1,9,11)]<\/p>\n<p># einen leeren Data-Frame erstellen<br \/>\ndf=data.frame(&#8218;Bezeichnung&#8217;=as.character(), &#8218;Wert&#8217;=as.character(), stringsAsFactors=FALSE)<br \/>\n# noch einen Data-Frame anlegen; alle Spalten m\u00fcssen gleiche Anzahl Zeilen<br \/>\ndf=data.frame(aaa=a[1:4],bbb=b,ccc=c)<\/p>\n<p># Inhalte und Typen erkunden<br \/>\ntypeof(a)<br \/>\nlength(a)<br \/>\nclass(b)<br \/>\nnames(df)<br \/>\nis.data.frame(df)<br \/>\nis.factor(df$ccc)<br \/>\nlevels(df$ccc)<br \/>\nstr(df)<br \/>\nstr(df$ccc)<br \/>\nnrow(df)<br \/>\nncol(df)<br \/>\ndf[1]     # Werte von Spalte 1<br \/>\ndf[&#8218;aaa&#8216;] # entspricht df[1]<br \/>\ndf[3,2]   # Wert von Reihe + Spalte<br \/>\ndf[3,]    # alle Spalten der dritten Reihe<br \/>\ndf$aaa<br \/>\ndf$aaa[2] # vom Vektor der zweite Wert<\/p>\n<p>colnames(df) <- c('aaa','b','ccc') # Spaltenname umbenennen\ncolnames(df)[2] = 'bbb'            # zweite Spalte umbenennen\nrownames(df)                       # Namen f\u00fcr die Zeilen\n\ndf <- cbind(df, \"ddd\"= 100-df$bbb)     # eine Spalte hinzuf\u00fcgen\ndf <- rbind(df, list(16, 10, 'M', 30)) # eine Zeile hinzuf\u00fcgen \n#    ...Spalte ddd muss Teil des Faktors sein (siehe unten)\n\ndf[order(df$ddd),]  # Tabelle sortieren\nsubset(df,df$bbb>4) # Tabelle filtern<\/p>\n<p># Beispiel: die b-Werte der Reihen, die b > 4<br \/>\n#    &#8211; einen logischen Vektor erstellen<br \/>\n#    &#8211; den Vektor f\u00fcr eine Auswahl verwenden<br \/>\n#    &#8211; nur die b-Werte anzeigen<br \/>\nL = df$bbb > 4<br \/>\ndf[L,]<br \/>\ndf[L,]$bbb<\/p>\n<p># Beispiel: Duplikate in Tabelle suchen<br \/>\n#    &#8211; die Tabelle df verdoppeln, durch anh\u00e4ngen<br \/>\n#    &#8211; f\u00fcr jede verdoppelte Zeile wird TRUE geliefert<br \/>\n#    &#8211; mit which die Zeilennummern der Duplikate holen<br \/>\n#    &#8211; mit dem ! die Ausgabe umkehren<br \/>\n#    &#8211; mit unique die eindeutigen Zeilen filtern<br \/>\n#    &#8211; dfdf dauerhaft l\u00f6schen<br \/>\ndfdf <- rbind(df,df)\nduplicated(dfdf)\nwhich(duplicated(dfdf))\nwhich(!duplicated(dfdf))\nunique(dfdf)\nrm(dfdf)\n\n# Beispiel: Tabelle gruppieren\n#    - gruppiere die Spalte ccc\n#    - summiere die Spalte bbb\ntapply(df$bbb,df$ccc,sum)\n\n# Beispiel: neue Werte zum Faktor in Spalte ccc hinzuf\u00fcgen\n#    - Buchstabe \"a\" hinzuf\u00fcgen\n#    - Buchstaben \"ndres\" hinzuf\u00fcgen\ndf$ccc <- factor(df$ccc, levels = c(levels(df$ccc), 'a'))\nvalues = letters[c(14,4,18,5,19)]\ndf$ccc <- factor(df$ccc, levels = c(levels(df$ccc), values))\ndf <- rbind(df, list(18, 12, 'a', 60))\n\n# Beispiel: eine Zeile komplett l\u00f6schen\n#    - alle Zeilen mit \"M\" suchen\n#    - Zeilennamen von M-Zeilen holen\n#    - Zeilennamen in Nummern wandeln\n#    - nur 2-te Nummer verwenden\n#    - Ergebnis umkehren\n#    - Zeilen von Tabelle holen\ndf <- df[-as.numeric(rownames(df[df$ccc == 'M',]))[2],]\n\n# Beispiel: Tabelle auf SQL-Server speichern\nconn <- odbcConnect(\"MAIK_x64\")\nodbcClearError(conn)\nsqlSave(conn, df, \"demo_r\", \n        rownames=FALSE, safer=FALSE, append=FALSE)\nclose(conn)[\/code]\n\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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=&#8220;scilab&#8220;]rm(list=ls()) # alles l\u00f6schen setwd(&#8222;C:\/Entwicklung\/Projekte\/BurDocs\/r\/demo\/&#8220;) source(&#8222;..\/config.R&#8220;) source(&#8222;..\/utils.R&#8220;) library(&#8222;RODBC&#8220;, lib.loc=libpath) # ein Vektor vom Typ &#8222;integer&#8220; # Zahlen: 12 bis 18 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[103],"class_list":["post-1577","post","type-post","status-publish","format-standard","hentry","category-skripte","tag-r","entry"],"_links":{"self":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/1577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/comments?post=1577"}],"version-history":[{"count":4,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/1577\/revisions"}],"predecessor-version":[{"id":1703,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/1577\/revisions\/1703"}],"wp:attachment":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/media?parent=1577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/categories?post=1577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/tags?post=1577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}