Alle Beiträge von Siglinde

Erweiterte Tipps und Tricks mit data.table

1. DATENSTRUKTUREN & ZUORDNUNG

Spalten von Listen
Zugriff auf Elemente aus einer Spalte von Listen heraus
Unterdrücken der Zwischenausgabe mit {}
Schnelles Looping mit Set. Mit dem sverweis mehrere spalten ausgeben und auswerten.
Verwendung der Verschiebung zum Führen/Lagern von Vektoren und Listen
Erstellen Sie mehrere Spalten mit := in einer Anweisung.
Weisen Sie eine Spalte mit := benannt mit einem Zeichenobjekt zu.

2. BY

Berechnen einer Funktion über eine Gruppe (mit by), wobei jede Entität in einer zweiten Kategorie ausgeschlossen wird.
METHODE 1: In-line
METHODE 2: Verwendung von {} und .SD
METHODE 3: Superschnelle Mittelwertberechnung
Geschwindigkeitskontrolle
Schlüssel für Schlüssel, die sich daraus ergebende aggregierte Tabelle
Verwenden von [1], [.N], setkey und by für innerhalb der Gruppenunterordnung

3. FUNKTIONEN

Übergabe von Spaltennamen der data.table als Funktionsargumente
Methode 2: Angebote und erhalten Sie
Vorsicht vor dem Scoping in der data.table
data.frame way
data.table Weg

Excel Listen

4. DRUCKEN

Drucke data.table mit [].
Ausgabe ausblenden von := mit knitritritr
Unterwegs erlernte Tipps und Tricks
Dies ist meist eine laufende Liste von data.table-Tricks, die mich eine Weile in Anspruch genommen hat, um herauszufinden, entweder durch das Graben in der offiziellen Dokumentation, die Anpassung von StackOverflow-Posts oder häufiger als nicht, stundenlanges Experimentieren. Ich möchte diese Entdeckungen irgendwo mit mehr Speicher als mein Kopf (Hallo Internet) fortsetzen, damit ich sie wiederverwenden kann, nachdem mein mentales Gedächtnis sie vergessen hat. Eine weniger organisierte und prägnante Ergänzung zum süßen Spickzettel von DataCamp für die Grundlagen.
Die meisten, wenn nicht sogar alle diese Techniken wurden für echte Data-Science-Projekte entwickelt und boten einen gewissen Mehrwert für mein Data Engineering. Ich habe alles auf den mtcars-Datensatz verallgemeinert, was diesen Wert in diesem leicht konstruierten Kontext möglicherweise nicht sofort deutlich macht. Diese Liste ist nicht vollständig, wie das DataCamp data.table Cheatsheet. OK, genug Haftungsausschlüsse!
Einige erweiterte Funktionen von data.table Creator Matt Dowle hier.

1. DATENSTRUKTUREN & ZUORDNUNG

Spalten von Listen
Übersichtstabelle (lang und schmal)
Dies könnte nützlich sein, ist aber mit traditionellen Methoden leicht zu erreichen.
dt <- data.table(mtcars)[, .(cyl, gear)]]
dt[,unique(gear), by=cyl]
## Zylinder V1
## 1: 6 4
## 2: 6 3
## 3: 6 5
## 4: 4 4
## 5: 4 3
## 6: 4 5
## 7: 8 3
## 8: 8 5
Übersichtstabelle (kurz und bündig)
Fügen Sie alle Kategorien von Zahnrädern für jeden Zylinder der Original data.table als Liste hinzu.

Das ist raffinierter. Es ist so einfach, dass ich diesen Trick benutze, um Daten schnell ad hoc auf der Kommandozeile zu erkunden. Kann auch für anspruchsvollere Datentechnik nützlich sein.
dt <- data.table(mtcars)[,.(gear, cyl)]]
dt[,gearsL:=list(list(unique(gear))), by=cyl] # original, hässlich
dt[,gearsL:=.(list(unique(gear))), by=cyl] # verbessert, schön
Kopf(dt)
## Zahnrad-ZylinderräderL
## 1: 4 6 4,3,5
## 2: 4 6 4,3,5
## 3: 4 4 4,3,5
## 4: 3 6 4,3,5
## 5: 3 8 3,5
## 6: 3 6 4,3,5
Aktualisierung 29.10.2015: Gemäß diesen Kommentaren zu StackOverlow, die sich auf meinen Beitrag beziehen, kann t[,gearsL:=list(list(unique(gear))), by=cyl] eleganter als t[,gearsL:=.(list(unique(gear))), by=cyl] geschrieben werden. Danke, dass du auf meine unnötig wortreiche und ungewöhnliche Syntax hingewiesen hast! Ich denke, ich habe das erste geschrieben, was funktionierte, als ich dies gepostet habe, ohne zu erkennen, dass die normale Syntax der äußeren Liste entsprach.
Zugriff auf Elemente aus einer Spalte von Listen heraus
Extrahieren Sie das zweite Element jeder Liste in gearL1 und erstellen Sie die Zeile gearL1. Dies ist nicht gerade bahnbrechend, sondern untersucht, wie man auf Elemente von Spalten zugreift, die aus Listen von Listen aufgebaut sind. lapply ist Ihr Freund.
dt[,gearL1:=lapply(gearsL, function(x) x[2]]]
dt[,gearS1:=sapply(gearsL, function(x) x[2]]]

Kopf(dt)
## Zahnrad-ZylinderräderL ZahnradL1 ZahnräderL1 ZahnräderS1
## 1: 4 6 4,3,5 3 3
## 2: 4 6 4,3,5 3 3
## 3: 4 4 4,3,5 3 3
## 4: 3 6 4,3,5 3 3
## 5: 3 8 3,5 5 5
## 6: 3 6 4,3,5 3 3
str(head(dt[,gearL1])))
## Liste der 6
## $ : nummer 3
## $ : nummer 3
## $ : nummer 3
## $ : nummer 3
## $ : nummer 5
## $ : nummer 3
str(head(dt[,gearS1])))
## num [1:6] 3 3 3 3 3 3 3 3 5 3 3
Aktualisierung 24.9.2015: Per Matt Dowle’s Kommentare, eine etwas syntaktisch prägnantere Art, dies zu tun:
dt[,gearL1:=lapply(gearsL, `[`, 2)]
dt[,gearS1:=sapply(gearsL, `[`, 2)]
Berechnen Sie alle Gänge für alle Fahrzeuge eines jeden Zylinders (mit Ausnahme der aktuellen Zeile). Dies kann nützlich sein, um Beobachtungen mit dem Mittelwert von Gruppen zu vergleichen, bei denen der Mittelwert der Gruppe nicht durch die Beobachtung von Interesse beeinflusst wird.
dt[,other_gear:=mapply(function(x, y) setdiff(x, y), x=gearsL, y=gear)]]]
Kopf(dt)
## Zahnrad-ZylinderräderL ZahnradL1 ZahnradL1 ZahnradS1 anderes_Getriebe
## 1: 4 6 4,3,5 3 3 3,5
## 2: 4 6 4,3,5 3 3 3,5
## 3: 4 4 4,3,5 3 3 3,5
## 4: 3 6 4,3,5 3 3 4,5
## 5: 3 8 3,5 5 5 5
## 6: 3 6 4,3,5 3 3 4,5
Aktualisierung 24.9.2015: Per Matt Dowle’s Kommentare, dies erreicht das gleiche wie oben.
dt[,other_gear:=mapply(setdiff, gearsL, gear)]]
Unterdrücken der Zwischenausgabe mit {}

Dies ist eigentlich ein Basis-R-Trick, den ich erst bei der Arbeit mit data.table entdeckt habe. Siehe ?`{` für einige Dokumentationen und Beispiele. Ich habe es nur innerhalb des J-Slots von data.table verwendet, es könnte allgemeiner sein. Ich finde es ziemlich nützlich, um Spalten spontan zu erzeugen, wenn ich eine mehrstufige vektorisierte Operation durchführen muss. Es kann Code bereinigen, indem es Ihnen erlaubt, die gleiche temporäre Variable durch einen prägnanten Namen zu referenzieren, anstatt den Code neu zu schreiben, um ihn neu zu berechnen.
dt <- data.table(mtcars)
Standardmäßig wird nur das letzte Objekt zurückgegeben, das in den Klammern unbenannt definiert ist.
dt[,{tmp1=mittel(mpg); tmp2=mittel(abs(mpg-tmp1))); tmp3=rund(tmp2, 2)}, by=cyl]
## Zylinder V1
## 1: 6 1.19
## 2: 4 3.83
## 3: 8 1.79
Wir können expliziter sein, indem wir eine benannte Liste dessen übergeben, was wir behalten wollen.
dt[,{tmp1=mittel(mpg); tmp2=mittel(abs(mpg-tmp1)); tmp3=rund(tmp2, 2); list(tmp2=tmp2, tmp3=tmp3)}, by=cyl]
## cyl tmp2 tmp2 tmp3 tmp3
## 1: 6 1.191837 1.19
## 2: 4 3.833058 3.83
## 3: 8 1.785714 1.79
Kann es auch so ohne Semikolon schreiben.
dt[,{tmp1=mittel(mpg)
tmp2=mittel(abs(mpg-tmp1)))
tmp3=rund(tmp2, 2)
list(tmp2=tmp2, tmp3=tmp3)},
by=cyl]
## cyl tmp2 tmp2 tmp3 tmp3
## 1: 6 1.191837 1.19
## 2: 4 3.833058 3.83
## 3: 8 1.785714 1.79

Das ist kniffliger mit := Zuweisungen… Ich glaube nicht, dass := dazu bestimmt ist, zu funktionieren, wenn es in { eingepackt ist. Wenn Sie mehrere Spalten mit := auf einmal zuweisen, können Sie die ersten Spalten, die Sie erstellen, nicht verwenden, um die folgenden Spalten zu erstellen, wie wir es mit = innerhalb der { oben getan haben. Das Verketten und dann das Löschen unerwünschter Variablen ist ein unordentlicher Workaround…. immer noch das Erkunden dieser Variablen.
dt <- data.table(mtcars)[,.(cyl, mpg)]]

dt[,tmp1:=mittel(mpg), by=cyl][,tmp2:=mittel(abs(mpg-tmp1)), by=cyl][,tmp1:=NULL]
Kopf(dt)
## cyl mpg tmp2
## 1: 6 21.0 1.191837
## 2: 6 21.0 1.191837
## 3: 4 22.8 3.833058
## 4: 6 21.4 1.191837
## 5: 8 18.7 1.785714
## 6: 6 18.1 1.191837
Schnelles Looping mit Set
Ich habe immer noch nicht viel mit dem Loop + Set Framework gearbeitet. Ich konnte mit := so ziemlich alles erreichen, was flexibler und leistungsfähiger ist. Wenn Sie jedoch eine Schleife benötigen, ist das Setzen um Größenordnungen schneller als native R-Zuweisungen innerhalb von Schleifen. Hier ist ein Ausschnitt aus den Neuigkeiten von data.table vor einiger Zeit:
Neuer Funktionssatz (DT,i,j,value) ermöglicht schnelle Zuordnung zu Elementen
von DT. Ähnlich wie :=, vermeidet aber den Overhead von [.data.table, so ist es auch hier.
viel schneller in einer Schleife. Weniger flexibel als :=, aber so flexibel.
als Matrix-Unterkontierung. Ähnlich wie bei setnames(), setcolorder(),
setkey() und setattr(), d.h., weist per Referenz ohne jegliche Kopie zu.

  • M = Matrix(1,nrow=100000,ncol=100)
  • DF = als.Daten.Rahmen(M)
  • DT = als.data.table(M)
  • system.time(for (i in 1:1000) DF[i,1L] <- i) # 591.000s
  • system.time(for (i in 1:1000) DT[i,V1:=i]) # 1.158s
  • system.time(for (i in 1:1000) M[i,1L] <- i) # 0.016s
  • system.time(for (i in 1:1000) set(DT,i,1L,i))) # 0.027s
  • data.table Creators bevorzugen set für einige Dinge, wie diese Aufgabe, die auch mit
  • lapply und .SD erledigt werden kann.
  • Ich wurde eigentlich zu dieser Lösung geleitet, nachdem ich diese Frage zu StackOverflow gestellt hatte.
  • Ich war auch erfreut zu erfahren, dass die gesuchte Funktionalität – das Anwenden einer Funktion auf eine Teilmenge von Spalten mit .SDcols unter Beibehaltung der unberührten Spalten – als Feature Request hinzugefügt wurde.

dt <- data.table(mtcars)[,1:5, with=F]
für (j in c(1L,2L,4L))) set(dt, j=j, value=-dt[[j]]) # ganze Zahlen, die ‚L‘ verwenden, die für Effizienz übergeben werden.
für (j in c(3L,5L)) set(dt, j=j, value=paste0(dt[[j]],‘!!‘))))
Kopf(dt)
## mpg cyl disp hp drat
## 1: -21.0 -6 160!! -110 3.9!!
## 2: -21.0 -6 160!! -110 3.9!!
## 3: -22.8 -4 108!! -93 3.85!!
## 4: -21.4 -6 258!! -110 3.08!!
## 5: -18.7 -8 360!! -175 3.15!!
## 6: -18.1 -6 225!! -105 2.76!!
Verwendung der Verschiebung zum Führen/Lagern von Vektoren und Listen
Beachten Sie, dass diese Funktion nur in der Version 1.9.5 (derzeit auf Github, nicht CRAN) verfügbar ist. Base R verfügt überraschend nicht über großartige Werkzeuge für den Umgang mit Leads/Lags von Vektoren, mit denen die meisten sozialwissenschaftlichen Statistikprogramme (Stata, SAS, sogar FAME, das ich in meinen prägenden Datenjahren verwendet habe) ausgestattet sind.
dt <- data.table(mtcars)[,.(mpg, cyl)]]
dt[,mpg_lag1:=shift(mpg, 1)]]
dt[,mpg_forward1:=shift(mpg, 1, type=’lead‘)]]]
Kopf(dt)
## mpg cyl mpg_lag1 mpg_forward1
## 1: 21.0 6 NA 21.0
## 2: 21.0 6 21.0 22.8
## 3: 22.8 4 21.0 21.4
## 4: 21.4 6 22.8 18.7
## 5: 18.7 8 21.4 18.1
## 6: 18.1 6 18.7 14.3
verschieben mit by
# Erstellen von Daten
n <- 30
dt <- data.table(
date=rep(seq(as.date(‚2010-01-01‘), as.date(‚2015-01-01′), by=’year‘), n/6),
ind=rpois(n, 5),
entity=sort(rep(letters[1:5], n/5))
)

setkey(dt, entity, date) # wichtig für die Bestellung
dt[,indpct_fast:=(ind/shift(ind, 1))-1, by=entity]

Lagpad <- Funktion(x, k) c(rep(NA, k), x)[1:Länge(x)]
dt[,indpct_slow:=(ind/lagpad(ind, 1))-1, by=entity]

Kopf(dt, 10)
## 1: 2010-01-01-01 3 a NA NA NA
## 2: 2011-01-01 2 a -0.3333333 -0.3333333
## 3: 2012-01-01 5 a 1.5000000 1.5000000
## 4: 2013-01-01 4 a -0.2000000 -0.2000000
## 5: 2014-01-01 1 a -0.7500000 -0.7500000
## 6: 2015-01-01 5 a 4.0000000 4.0000000
## 7: 2010-01-01-01 2 b NA NA NA
## 8: 2011-01-01 6 b 2.0000000 2.0000000
## 9: 2012-01-01 8 b 0.3333333 0.3333333
## 10: 2013-01-01 9 b 0.1250000 0.1250000
Erstellen Sie mehrere Spalten mit := in einer Anweisung.
Dies ist nützlich, aber beachten Sie, dass die Spalten, an denen gearbeitet wird, Atomvektoren oder Listen sein müssen. Das heißt, sie müssen vor der Ausführung der Berechnung vorhanden sein.
Gebäudekolonnen, die auf andere Kolonnen in diesem Satz verweisen, müssen einzeln oder in Kettenform erstellt werden.
dt <- data.table(mtcars)[,.(mpg, cyl)]]
dt[,`:=`(avg=mittel(mpg), med=median(mpg), min=min(mpg)), by=cyl]
Kopf(dt)

## mpg cyl avg avg med min
## 1: 21.0 6 19.74286 19.7 17.8
## 2: 21.0 6 19.74286 19.7 17.8
## 3: 22.8 4 26.66364 26.0 21.4
## 4: 21.4 6 19.74286 19.7 17.8
## 5: 18.7 8 15.10000 15.2 10.4
## 6: 18.1 6 19.74286 19.7 17.8
Weisen Sie eine Spalte mit := benannt mit einem Zeichenobjekt zu.
Dies ist der empfohlene Weg, um eine neue Spalte zuzuordnen, deren Namen Sie bereits festgelegt und als Zeichen gespeichert haben. Umgeben Sie das Zeichenobjekt einfach in Klammern.
dt <- data.table(mtcars)[, .(cyl, mpg)]]

thing2 <-‚mpgx2“.
dt[,(thing2):=mpg*2]

Kopf(dt)
## cyl mpg mpg mpgx2
## 1: 6 21.0 42.0
## 2: 6 21.0 42.0
## 3: 4 22.8 45.6
## 4: 6 21.4 42.8
## 5: 8 18.7 37.4
## 6: 6 18.1 36.2
Dies ist eine alte (jetzt veraltete) Methode, die im Moment noch funktioniert. Nicht empfohlen.
thing3 <-‚mpgx3“.
dt[,thing3:=mpg*3, with=F]

Kopf(dt)
## cyl mpg mpg mpgx2 mpgx3
## 1: 6 21.0 42.0 63.0
## 2: 6 21.0 42.0 63.0
## 3: 4 22.8 45.6 68.4
## 4: 6 21.4 42.8 64.2
## 5: 8 18.7 37.4 56.1
## 6: 6 18.1 36.2 54.3
2. BY

Berechnen einer Funktion über eine Gruppe (mit by), wobei jede Entität in einer zweiten Kategorie ausgeschlossen wird.

Dieser Titel macht wahrscheinlich nicht sofort viel Sinn. Lassen Sie mich erklären, was ich berechnen werde und warum an einem Beispiel. Wir wollen das mpg jedes Autos mit dem durchschnittlichen mpg der Autos in der gleichen Klasse (die gleiche Anzahl von Zylindern) vergleichen. Wir wollen jedoch nicht den Gruppenmittelwert verzerren, indem wir das Auto einbeziehen, das wir mit dem Durchschnitt in diesem Durchschnitt vergleichen wollen.

Diese Annahme erscheint in diesem Beispiel nicht sinnvoll, sondern geht davon aus, dass gear+cyl die Autos eindeutig identifiziert. In dem realen Projekt, in dem ich mit diesem Problem konfrontiert war, berechnete ich einen Indikator für einen Gutachter im Verhältnis zum Durchschnitt aller anderen Gutachter in ihrer zip3. (Zyl. war wirklich Postleitzahl und Ausrüstung war der Ausweis des Gutachters).
METHODE 1: In-line
0,a Verzerrter Mittelwert: einfacher Mittelwert durch Zyl.
Wir wollen jedoch für jede Reihe wissen, was der Mittelwert unter all den anderen Autos mit der gleichen Anzahl von Zyklen ist, mit Ausnahme dieses Autos.

dt <- data.table(mtcars)[,.(cyl, gear, mpg)]]
dt[, mpg_biased_mean:=mean(mpg), by=cyl]
Kopf(dt)
## cyl gear mpg mpg mpg_biased_mean
## 1: 6 4 21.0 19.74286
## 2: 6 4 21.0 19.74286
## 3: 4 4 22.8 26.66364
## 4: 6 3 21.4 19.74286
## 5: 8 3 18.7 15.10000
## 6: 6 3 18.1 19.74286
1.a.GRP ohne Einstellschlüssel
dt[, dt[!gear %in% unique(dt$gear)[.GRP], mean(mpg), by=cyl], by=gear] #unverzerrtes Mittel
## Zahnrad-Zylinder V1
## 1: 4 6 19.73333
## 2: 4 8 15.10000
## 3: 4 4 25.96667
## 4: 3 6 19.74000
## 5: 3 4 27.18000
## 6: 3 8 15.40000
## 7: 5 6 19.75000
## 8: 5 4 26.32222
## 9: 5 8 15.05000
# überprüfen
dt[gear!=4 & cyl===6, mean(mpg)]]
## [1] 19.73333

Aktualisierung 24.9.2015: Per Matt Dowle’s Kommentare, dies funktioniert auch mit etwas weniger Code. Für mein einfaches Beispiel gab es auch einen marginalen Geschwindigkeitsgewinn. Die Zeitersparnis gegenüber der.GRP-Methode wird mit der Komplexität des Problems wahrscheinlich zunehmen.
dt[, dt[!gear %in% .BY[[1]], mean(mpg), by=cyl], by=gear] #unverzerrtes Mittel
## Zahnrad-Zylinder V1
## 1: 4 6 19.73333
## 2: 4 8 15.10000
## 3: 4 4 25.96667
## 4: 3 6 19.74000
## 5: 3 4 27.18000
## 6: 3 8 15.40000
## 7: 5 6 19.75000
## 8: 5 4 26.32222
## 9: 5 8 15.05000
1.b Wie 1.a, aber etwas schneller.

uid <- unique(dt$gear)
dt[, dt[!gear %in% (uid[.GRP]), mean(mpg), by=cyl], by=gear][order(cyl, gear)] #unverzerrtes Mittel
## Zahnrad-Zylinder V1
## 1: 3 4 27.18000
## 2: 4 4 25.96667
## 3: 5 4 26.32222
## 4: 3 6 19.74000
## 5: 4 6 19.73333
## 6: 5 6 19.75000
## 7: 3 8 15.40000
## 8: 4 8 15.10000
## 9: 5 8 15.05000
Warum funktioniert das?
# 1.a es auseinanderziehen mit .GRP
dt[, .GRP, by=cyl]
## Zylinder aus GFK
## 1: 6 1
## 2: 4 2
## 3: 8 3
dt[, .(.GRP, unique(dt$gear)[.GRP]), by=cyl]
## Zylinder GFK V2
## 1: 6 1 4
## 2: 4 2 3
## 3: 8 3 5
dt[,dt[, .(.GRP, unique(dt$gear)[.GRP]), by=cyl], by=gear]
## Zahnrad-Zylinder GFK V2
## 1: 4 6 1 4
## 2: 4 4 2 3
## 3:

## 3: 4 8 3 5
## 4: 3 6 1 4
## 5: 3 4 2 3
## 6: 3 8 3 5
## 7: 5 6 1 4
## 8: 5 4 2 3
## 9: 5 8 3 5
1.b Einstellschlüssel
setkey(dt, gear)
uid <- unique(dt$gear)
dt[, dt[!..(uid[.GRP]), mean(mpg), by=cyl], by=gear] #unverzerrtes Mittel
## Zahnrad-Zylinder V1
## 1: 3 6 19.74000
## 2: 3 4 27.18000
## 3: 3 8 15.40000
## 4: 4 6 19.73333
## 5: 4 8 15.10000
## 6: 4 4 25.96667
## 7: 5 6 19.75000
## 8: 5 8 15.05000
## 9: 5 4 26.32222
mean(dt[cyl===4 & gear!=3,mpg]) # testung
## [1] 27.18
mean(dt[cyl===6 & gear!=3,mpg]) # testing # testing
## [1] 19.74
METHODE 2: Verwendung von {} und .SD
{} wird verwendet, um Zwischenoperationen zu unterdrücken.
Aufbauen

Hier gibt es keine Überraschungen.
dt[, .SD[, mean(mpg)], by=gear] # wie `dt[, mean(mpg), by=gear]`
## Gang V1
## 1: 3 16.10667
## 2: 4 24.53333
## 3: 5 21.38000
dt[, .SD[, mean(mpg), by=cyl], by=gear] # wie `dt[, mean(mpg), by=.(cyl, by=gear)]`
## Zahnrad-Zylinder V1
## 1: 3 6 19.750
## 2: 3 8 15.050
## 3: 3 4 21.500
## 4: 4 6 19.750
## 5: 4 4 26.925
## 6: 5 4 28.200
## 7: 5 8 15.400
## 8: 5 6 19.700
Verschachtelte data.tables und durch Anweisungen
Dieser Chunk zeigt, was mit zweien passiert, indem Anweisungen in zwei verschiedene data.tables verschachtelt sind. Nur zu Erklärungszwecken – nicht notwendig für unsere Aufgabe. n zählt die Anzahl der Fahrzeuge in diesem Zylinder, N zählt die Anzahl der Fahrzeuge pro Zylinder und Getriebe.

dt[,{
vbar = sum(mpg)
n = .N
.SD[,.(n, .N, sum_in_gear_cyl=sum(mpg), sum_in_cyl=vbar), by=gear]
} , by=cyl]
## Zylindergetriebe n N Summe_in_Getriebe_Zylinder Summe_in_Zylindern
## 1: 6 3 7 2 39.5 138.2
## 2: 6 4 7 4 79.0 138.2
## 3: 6 5 7 1 19.7 138.2
## 4: 8 3 14 12 180.6 211.4
## 5: 8 5 14 2 30.8 211.4
## 6: 4 3 11 1 21.5 293.3
## 7: 4 4 11 8 215.4 293.3
## 8: 4 5 11 2 56.4 293.3
dt[,sum(mpg), by=cyl] # test
## Zylinder V1
## 1: 6 138.2
## 2: 8 211.4
## 3: 4 293.3
Berechnung des „unvoreingenommenen Mittelwerts“.
Dies geschieht in einer Summentabelle. Dies müsste, wenn gewünscht, wieder auf dt zusammengeführt werden.

dt[,{
vbar = mean(mpg)
n = .N
.SD[,(n*vbar-sum(mpg))/(n-.N),by=gear]
} , by=cyl]
## Zylindergetriebe V1
## 1: 6 3 19.74000
## 2: 6 4 19.73333
## 3: 6 5 19.75000
## 4: 8 3 15.40000
## 5: 8 5 15.05000
## 6: 4 3 27.18000
## 7: 4 4 25.96667
## 8: 4 5 26.32222
METHODE 3: Superschnelle Mittelwertberechnung
Nichtfunktionaler direkter Weg
Verwenden eines vektorisierten Ansatzes zum Berechnen des unvoreingenommenen Mittelwerts für jede Kombination von Zahnrad und Zylinder. Mechanisch berechnet es den „voreingenommenen Durchschnitt“ für alle Fahrzeuge nach Zylindern und subtrahiert dann den Anteil der Fahrzeuge mit der Kombination aus Getriebe und Zylinder, die wir vom Durchschnitt ausschließen wollen, und addiert diesen Anteil. Dann extrapolieren Sie diesen reduzierten Mittelwert.

dt <- data.table(mtcars)[,.(mpg,cyl,gear)]]
dt[,`:=`(avg_mpg_cyl=mittel(mpg), Ncyl=.N), by=cyl]
dt[,`:=`(Ncylgear=.N, avg_mpg_cyl_gear=mean(mpg))), by=.(cyl, gear)]]
dt[,unbmean:=(avg_mpg_cyl*Ncyl-(Ncylgear*avg_mpg_cyl_gear))/(Ncyl-Ncylgear)]]]
setkey(dt, cyl, cyl, gear)
Kopf(dt)
## mpg cyl gear avg_mpg_cyl Ncyl Ncyl Ncylgear avg_mpg_cyl_gear unbemittelt
## 1: 21.5 4 3 26.66364 11 1 21.500 27.18000
## 2: 22.8 4 4 26.66364 11 8 26.925 25.96667
## 3: 24.4 4 4 26.66364 11 8 26.925 25.96667
## 4: 22.8 4 4 26.66364 11 8 26.925 25.96667
## 5: 32.4 4 4 26.66364 11 8 26.925 25.96667
## 6: 30.4 4 4 26.66364 11 8 26.925 25.96667
Verpacken des untenstehenden Codes in eine Funktion
leaveOneOutMean <- Funktion(dt, ind, bybig, bysmall) {
dtmp <- copy(dt) # copy, um das ursprüngliche dt Objekt mit Zwischenzuweisungen nicht zu verändern.
dtmp <- dtmp[is.na(get(ind))==F,]
dtmp[,`:=`(avg_ind_big=mean(get(ind)), Nbig=.N), by=.(get(bybig))]]
dtmp[,`:=`(Nbigsmall=.N, avg_ind_big_small=mean(get(ind)))), by=.(get(bybig), get(bysmall))]]]
dtmp[,unbmean:=(avg_ind_big*Nbig-(Nbigsmall*avg_ind_big_klein_klein))/(Nbig-Nbigklein)]]]
return(dtmp[,unbmean]))
}

dt <- data.table(mtcars)[,.(mpg,cyl,gear)]]
dt[,unvoreingenommen_mean:=leaveOneOutMean(.SD, ind=’mpg‘, bybig=’cyl‘, bysmall=’gear‘)]]]
dt[,bias_mean:=mean(mpg), by=cyl]
Kopf(dt)
## mpg cyl Zahnrad unvoreingenommen_mittel voreingenommen_mittel
## 1: 21.0 6 4 19.73333 19.74286
## 2: 21.0 6 4 19.73333 19.74286
## 3: 22.8 4 4 25.96667 26.66364
## 4: 21.4 6 3 19.74000 19.74286
## 5: 18.7 8 3 15.40000 15.10000
## 6: 18.1 6 3 19.74000 19.74286

Geschwindigkeitskontrolle

Das Verfahren 3 ist etwa 100x schneller als die beiden anderen. Großartig für diese enge Aufgabe mit der eingebauten Vektorisierung, aber weniger verallgemeinerbar; Die beiden anderen Methoden ermöglichen es, jede Funktion zu übergeben.
dt <- data.table(mtcars)
dt <- dt[sample(1:.N, 100000, replace=T), ] # Erhöhung der Zeilenzahl in mtcars

dt$gear <- sample(1:300, nrow(dt), replace=T) # Hinzufügen von mehr Kateogorien
Verfahren 3:
system.time(dt[,unvoreingenommen_mittel_vektorisiert:=leaveOneOutMean(.SD, ind=’mpg‘, bybig=’cyl‘, bysmall=’gear‘)]))
##Benutzersystem ist abgelaufen
## 0.033 0.003 0.035
Verfahren 2:
system.time(tmp <- dt[,dt[!gear %in% unique(dt$gear)[.GRP], mean(mpg), by=cyl], by=gear] ) )
##Benutzersystem ist abgelaufen
## 3.709 0.359 4.069
Verfahren 1:
uid <- unique(dt$gear)
system.time(dt[, dt[!gear %in% (uid[.GRP]), mean(mpg), by=cyl], by=gear][order(cyl, gear)]))
##Benutzersystem ist abgelaufen
## 3.345 0.331 3.677

Schlüssel für Schlüssel, die sich daraus ergebende aggregierte Tabelle Ohne Keyby
Kategorien sind nicht sortiert
## devtools::install_github(‚brooksandrew/Rsenal‘)
library(‚Rsenal‘) # Grabbing Tiefenbin-Funktion
tmp <- dt[, .(N=.N, sum=sum(vs), mean=mean(vs)/.N), by=depthbin(mpg, 5, labelOrder=T)]]
tmp
## Tiefe N Summe Mittelwert
## 1: (15.2,17.8] 2/5 15372 3131 1.325020e-05
## 2: (17.8,21] 3/5 21839 6204 1.300787e-05
## 3: [10.4,15.2] 1/5 25255 0 0.000000e+00
## 4: (21,24.4] 4/5 18817 18817 5.314343e-05
## 5: (24.4,33.9] 5/5 18717 15581 4.447571e-05
tmp[,barplot(mean, names=depthbin, las=2)]]

## [,1]
## [1,] 0.7
## [2,] 1.9
## [3,] 3.1
## [4,] 4.3
## [5,] 5.5
Mit Keyby
## devtools::install_github(‚brooksandrew/Rsenal‘)
Bibliothek(‚Rsenal‘)
tmp <- dt[, .(N=.N, sum=sum(vs), mean=mean(vs)/.N), keyby=depthbin(mpg, 5, labelOrder=T)]]
tmp
## Tiefe N Summe Mittelwert
## 1: [10.4,15.2] 1/5 25255 0 0.000000e+00
## 2: (15.2,17.8] 2/5 15372 3131 1.325020e-05
## 3: (17.8,21] 3/5 21839 6204 1.300787e-05
## 4: (21,24.4] 4/5 18817 18817 5.314343e-05
## 5: (24.4,33.9] 5/5 18717 15581 4.447571e-05
tmp[,barplot(mean, names=depthbin, las=2)]]

## [,1]
## [1,] 0.7
## [2,] 1.9
## [3,] 3.1
## [4,] 4.3
## [5,] 5.5
Verwenden von [1], [.N], setkey und by für innerhalb der Gruppenunterordnung
den höchsten Wert der Spalte A annehmen, wenn die Spalte B nach Gruppe am höchsten ist.
Max. qsec für jede Kategorie von Zylindern (das ist einfach)
dt <- data.table(mtcars)[, .(cyl, mpg, qsec)]]
dt[, max(qsec), by=cyl]
## Zylinder V1
## 1: 6 20.22
## 2: 4 22.90
## 3: 8 18.00
Wert von qsec, wenn mpg der höchste Wert pro Kategorie von Zylindern ist.
(das ist kniffliger)
setkey(dt, mpg)
dt[,qsec[.N], by=cyl]
## Zylinder V1
## 1: 8 17.05
## 2: 6 19.44
## 3: 4 19.90

  • Wert von qsec, wenn mpg der niedrigste pro Kategorie von Zylindern ist.
    dt[,qsec[1], by=cyl]
    ## Zylinder V1
    ## 1: 8 17.98
    ## 2: 6 18.90
    ## 3: 4 18.60
  • Wert von qsec, wenn mpg der Median pro Kategorie von Zylindern ist.
    dt[,qsec[round(.N/2)], by=cyl], by=cyl]
    ## Zylinder V1
    ## 1: 8 18.0
    ## 2: 6 15.5
    ## 3: 4 16.7
  • Teilmengenzeilen innerhalb der Anweisung
    V1 ist die Standardabweichung von mpg nach Zylindern.
  • V2 ist die Standardabweichung von mpg für nur die erste Hälfte von mpg.
  • dt <- data.table(mtcars)
  • setkey(dt,mpg)
  • dt[, .(sd(mpg), sd(mpg[1:round(.N/2)]))), by=cyl])
    ## cyl V1 V2 V2
    ## 1: 8 2.560048 2.0926174
    ## 2: 6 1.453567 0.8981462
    ## 3: 4 4.509828 1.7728508

3. FUNKTIONEN

Übergabe von Spaltennamen der data.table als Funktionsargumente
Methode 1: Keine Angebote, und Abreise + Ersatz
Dieser Weg erscheint mehr data.table-ish, weil er die Praxis beibehält, in den meisten Fällen keine Anführungszeichen für Variablennamen zu verwenden.
dt <- data.table(mtcars)[,.(cyl, mpg)]]
myfunc <- function(dt, v) {
v2=deparse(substitute(v))
dt[,v2, with=F][[1]]] # [[1]]] gibt einen Vektor anstelle einer data.table zurück.
}

myfunc(dt, mpg)
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2
## [15] 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4
## [29] 15.8 19.7 15.0 21.4
Methode 2: Angebote und erhalten Sie
Allerdings tendiere ich dazu, Spaltennamen als Zeichen (zitiert) zu verwenden und get jedes Mal zu verwenden, wenn ich auf diese Spalte verweise. Das kann ärgerlich sein, wenn Sie eine lange Funktion haben, die wiederholt auf Spaltennamen verweist, aber ich muss oft so wenige Zeilen Code mit data.table schreiben, es ist mir noch nicht so schrecklich unscheinbar erschienen.
dt <- data.table(mtcars)
myfunc <- function(dt, v) dt[,get(v)]]

myfunc(dt, ‚mpg‘)
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2
## [15] 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4
## [29] 15.8 19.7 15.0 21.4
Vorsicht vor dem Scoping in der data.table
data.frame way
Wenn Sie innerhalb einer Funktion, die in der globalen Umgebung existiert, etwas zu einem data.frame hinzufügen, wirkt sich dies nicht auf dieses Objekt in der globalen Umgebung aus, es sei denn, Sie kehren zurück und weisen es als solches neu zu oder Sie verwenden den Operator <<<-.
df <- mtcars[,c(‚cyl‘, ‚mpg‘)]]
add_column_df <- function(df) {
df$addcol1<-‚hier in func!‘.
df$addcol2 <<<-‚in glob env!‘.
rückgabe(df)
}

Wenn wir die Funktion aufrufen, sehen wir addcol1 in der Ausgabe. Aber nicht addcol2. Das liegt daran, dass es dem df in der globalen Umgebung eine Ebene höher hinzugefügt wurde.
head(add_column_df(df)))
## cyl mpg addcol1
## Mazda RX4 6 21.0 hier in func!
## Mazda RX4 Wag 6 21.0 hier in func!
## Datsun 710 4 22.8 hier in func!
## Hornet 4 Drive 6 21.4 hier in func!

## Hornet Sportabout 8 18.7 hier in func!
## Valiant 6 18.1 hier in func!
Hier ist addcol2, aber nicht addcol.
Kopf(df)
## cyl mpg addcol2
## Mazda RX4 6 21.0 in glob env!
## Mazda RX4 Wag 6 21.0 in glob env!
## Datsun 710 4 22.8 in glob env!
## Hornet 4 Drive 6 21.4 in glob env!
## Hornet Sportabout 8 18.7 in glob env!
## Valiant 6 18.1 in glob env!
data.table Weg

Im Gegensatz zu data.frame fügt der Operator := eine Spalte sowohl dem in der globalen Umgebung lebenden als auch in der Funktion verwendeten Objekt hinzu. Ich denke, das liegt daran, dass diese Objekte tatsächlich das gleiche Objekt sind. data.table verkürzt die Rechenzeit, indem es keine Kopien erstellt, es sei denn, es wird ausdrücklich darauf hingewiesen.
dt <- data.table(mtcars)
add_column_dt <- function(dat) {
dat[,addcol:=’kleben_an_dt!‘] # hits dt in glob env
return(dat)
}
head(add_column_dt(dt))) # addcol here
## mpg cyl disp hp drat wt qsec vs. am gear carb addcol
## 1: 21.0 6 160 110 110 3.90 2.620 16.46 0 1 4 4 kleben_an_dt!
## 2: 21.0 6 160 110 110 3.90 2.875 17.02 0 1 4 4 kleben_an_dt!
## 3: 22.8 4 108 93 3.85 2.320 18.61 1 1 1 4 1 kleben_an_dt!
## 4: 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 kleben_an_dt!
## 5: 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 kleben_an_dt!
## 6: 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 Verkleben_auf_dt!
head(dt) # addcol auch hier
## mpg cyl disp hp drat wt qsec vs. am gear carb addcol
## 1: 21.0 6 160 110 110 3.90 2.620 16.46 0 1 4 4 kleben_an_dt!
## 2: 21.0 6 160 110 110 3.90 2.875 17.02 0 1 4 4 kleben_an_dt!
## 3: 22.8 4 108 93 3.85 2.320 18.61 1 1 1 4 1 kleben_an_dt!
## 4: 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 kleben_an_dt!
## 5: 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 kleben_an_dt!
## 6: 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 Verkleben_auf_dt!

So etwas wie diese Umbenennung der lokalen Version mit Kopie umgeht dieses Verhalten, ist aber wahrscheinlich etwas weniger effizient (und elegant). Ich vermute, dass es einen saubereren und/oder schnelleren Weg gibt, dies zu tun: Halten Sie einige Variablen lokal für die Funktion, während Sie andere Spalten persistieren und zurückgeben.
dt <- data.table(mtcars)
add_column_dt <- function(dat) {
datloc <- copy(dat)
datloc[,addcol:=’not sticking_to_dt!‘] # trifft dt in glob env
return(datloc)
}

head(add_column_dt(dt))) # addcol here
## mpg cyl disp hp drat wt qsec vs. am gear carb addcol
## 1: 21.0 6 160 110 110 3.90 2.620 16.46 0 1 4 4 nicht haftend_an_dt!
## 2: 21.0 6 160 110 110 3.90 2.875 17.02 0 1 4 4 4 nicht haftend_an_dt!
## 3: 22.8 4 108 93 3.85 2.320 18.61 1 1 1 4 1 nicht klebend_an_dt!
## 4: 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 nicht haftend_an_dt!
## 5: 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 nicht haftend_an_dt!
## 6: 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 nicht klebend_an_dt!
head(dt) # addcol nicht hier
## mpg cyl disp hp drat wt qsec vs. am gear carb
## 1: 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## 2: 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## 3: 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## 4: 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## 5: 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## 6: 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

4. DRUCKEN

Drucke data.table mit [].
Nichts bahnbrechendes hier, sondern ein kleines, vielseitiges Stück Funktionalität. In der data.frame-Welt wird durch das Umschließen eines Ausdrucks in () die Ausgabe an die Konsole gedruckt. Dies funktioniert auch mit data.table, aber es gibt noch einen anderen Weg. In der data.table wird dies durch Anhängen von [] an das Ende des Ausdrucks erreicht. Ich finde das nützlich, denn wenn ich an der Konsole forsche, beschließe ich normalerweise nicht, die Ausgabe zu drucken, bis ich fast fertig bin und ich bereits am Ende des von mir geschriebenen Ausdrucks stehe.
# data.frame Druckweise nach einer Zuweisung
df <- head(mtcars) # wird nicht gedruckt
(df <- head(mtcars)) # does print

## mpg cyl disp hp drat wt qsec vs. am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 4 4
## Datsun 710 22,8 4 108 93 3,85 2,320 18,61 1 1 1 4 1 4 1
## Hornet 4 Antrieb 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 0 3 2 2 2
## Tapfer 18,1 6 225 105 2,76 3,460 20,22 1 0 3 1 1
# data.table Druckmethode nach einer Zuweisung
dt <- data.table(head(mtcars)) # druckt nicht
dt[,hp2wt:=hp/wt][][] # wird gedruckt
## mpg cyl disp hp drat wt qsec vs. am Getriebe carb hp2wt
## 1: 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 41.98473
## 2: 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 38.26087
## 3: 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 40.08621
## 4: 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 34.21462

## 5: 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 50.87209
## 6: 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 30.34682
Ausgabe ausblenden von := mit knitritritr
Früher druckten Zuweisungen mit dem Operator := das Objekt an die Konsole, wenn Dokumente mit Strickerei und Rmarkdown gestrickt wurden. Dies ist in der data.table v1.9.5 behoben. Zum Zeitpunkt meines Schreibens ist dies jedoch derzeit auf CRAN nicht verfügbar…. nur Github. Für 1.9.4 Benutzer bietet dieser StackOverflow-Post einige Hacky-Lösungen. Dieser Ansatz der geringsten Impedanz, den ich gefunden habe, war es, den Ausdruck einfach in unsichtbar zu wickeln. Andere Lösungen ändern die Art und Weise, wie Sie data.table verwenden, was mir nicht gefiel.

Wie man zwei Excel-Dateien auf Unterschiede vergleicht

In diesem Tutorial erfahren Sie eine Vielzahl von Methoden, um Excel-Dateien zu vergleichen und Unterschiede zwischen ihnen zu erkennen. Erfahren Sie, wie Sie zwei Excel-Fenster nebeneinander öffnen, Excel-Formeln verwenden können, um einen Differenzbericht zu erstellen, Unterschiede durch bedingte Formatierung hervorzuheben und vieles mehr.

Wenn Sie zwei ähnliche Excel-Arbeitsmappen haben, oder besser gesagt, zwei Versionen derselben Arbeitsmappe, was ist das erste, was Sie normalerweise mit ihnen machen wollen? Richtig, vergleichen Sie diese Dateien auf Unterschiede, und führen Sie sie dann wahrscheinlich in einer einzigen Datei zusammen. Darüber hinaus kann der Arbeitsmappenvergleich Ihnen helfen, potenzielle Probleme wie defekte Links, doppelte Datensätze, inkonsistente Formeln oder falsche Formatierungen zu erkennen. Einige excel tabellen vergleichen sverweis und wenn-Abfrage dafür nutzen.
Lassen Sie uns also einen genaueren Blick auf verschiedene Methoden werfen, um zwei Excel-Tabellen oder ganze Arbeitsmappen zu vergleichen und Unterschiede zwischen ihnen zu identifizieren.

Exceldaten auswerten

Vergleichen Sie zwei Excel-Dateien, indem Sie sie nebeneinander anzeigen.
Vergleichen Sie zwei Excel-Tabellen auf Unterschiede anhand von Formeln.
Hervorheben von Unterschieden zwischen 2 Blättern mit bedingter Formatierung
Kopien einer freigegebenen Arbeitsmappe vergleichen und zusammenführen
Spezielle Tools zum Vergleichen von Dateien in Excel
Online-Dienste zum Vergleich zweier Excel-Tabellen
Wie man zwei Excel-Dateien vergleicht, indem man sie Seite an Seite betrachtet.
Wenn Sie relativ kleine Arbeitsmappen und einen scharfen Blick für Details haben, könnte dieser schnelle und einfache Weg zum Vergleichen von Excel-Dateien für Sie gut geeignet sein. Ich spreche von View Side by Side Modus, mit dem Sie zwei Excel-Fenster nebeneinander anordnen können. Mit dieser Methode können Sie zwei Arbeitsmappen oder zwei Blätter in derselben Arbeitsmappe visuell vergleichen.

Vergleich von 2 Excel-Arbeitsmappen

Nehmen wir an, Sie haben Umsatzberichte für zwei Monate und Sie möchten beide gleichzeitig ansehen, um zu verstehen, welche Produkte in diesem Monat besser abgeschnitten haben und welche im letzten Monat besser waren.
Um zwei Excel-Dateien nebeneinander zu öffnen, gehen Sie wie folgt vor:
Öffnen Sie die Arbeitsmappen, die Sie vergleichen möchten.
Gehen Sie zur Registerkarte Ansicht, Gruppe Fenster, und klicken Sie auf die Schaltfläche Ansicht Seite an Seite. Das ist es!

Standardmäßig werden zwei separate Excel-Fenster horizontal angezeigt.
Um Excel-Fenster vertikal aufzuteilen, klicken Sie auf die Schaltfläche Alle anordnen und wählen Sie Vertikal:

Als Ergebnis werden zwei separate Excel-Fenster nebeneinander angeordnet, wie im folgenden Screenshot.
Wenn Sie durch beide Arbeitsblätter gleichzeitig blättern möchten, um Daten zeilenweise zu vergleichen, stellen Sie sicher, dass die Option Synchrones Blättern aktiviert ist. Diese Option befindet sich auf der Registerkarte Ansicht in der Gruppe Fenster direkt unter der Schaltfläche Ansicht Seite an Seite und wird normalerweise automatisch eingeschaltet, sobald Sie den Modus Ansicht Seite an Seite aktivieren.

Weitere Informationen zur Verwendung dieser Excel-Funktion finden Sie unter Excel-Arbeitsmappen nebeneinander anzeigen.

Mehrere Excel-Fenster nebeneinander anordnen

Um mehr als 2 Excel-Dateien gleichzeitig anzuzeigen, öffnen Sie alle Arbeitsmappen, die Sie vergleichen möchten, und klicken Sie auf die Schaltfläche View Side by Side. Das Dialogfeld Compare Side by Side erscheint, und Sie wählen die Dateien aus, die zusammen mit der aktiven Arbeitsmappe angezeigt werden sollen.

Um alle geöffneten Excel-Dateien gleichzeitig anzuzeigen, klicken Sie auf die Schaltfläche Alle anordnen auf der Registerkarte Ansicht in der Gruppe Fenster und wählen Sie die gewünschte Anordnung: gefliest, horizontal, vertikal oder kaskadiert.
Vergleichen Sie zwei Blätter in derselben Arbeitsmappe.
Manchmal befinden sich 2 Blätter, die Sie vergleichen möchten, in derselben Arbeitsmappe. Um sie nebeneinander zu betrachten, führen Sie die folgenden Schritte aus.
Öffnen Sie Ihre Excel-Datei, gehen Sie zur Registerkarte Ansicht > Gruppe Fenster und klicken Sie auf die Schaltfläche Neues Fenster.

Dadurch wird die gleiche Excel-Datei in einem anderen Fenster geöffnet.
Aktivieren Sie den View Side by Side Modus, indem Sie auf die entsprechende Schaltfläche in der Multifunktionsleiste klicken.
Wählen Sie Blatt 1 im ersten Fenster und Blatt 2 im zweiten Fenster.
Wie man zwei Excel-Tabellen für Unterschiede in den Werten vergleicht
Es ist der einfachste Weg, Daten in Excel zu vergleichen, mit dem Sie Zellen mit unterschiedlichen Werten identifizieren können. Als Ergebnis erhalten Sie einen Differenzbericht in einem neuen Arbeitsblatt.

Um zwei Excel-Arbeitsblätter für Unterschiede zu vergleichen, öffnen Sie einfach ein neues leeres Blatt, geben Sie die folgende Formel in Zelle A1 ein und kopieren Sie sie dann nach unten und rechts, indem Sie den Füllgriff ziehen:
=IF(Sheet1!A1 <> Sheet2!A1, „Sheet1:“&Sheet1!A1&“ vs Sheet2:“&Sheet2!A1, „“)
Aufgrund der Verwendung relativer Zellreferenzen ändert sich die Formel basierend auf einer relativen Position der Spalte und Zeile. Als Ergebnis wird die Formel in A1 die Zelle A1 in Blatt1 und Blatt2 vergleichen, die Formel in B1 die Zelle B1 in beiden Blättern, und so weiter. Das Ergebnis wird ähnlich aussehen:

Wie Sie im obigen Screenshot sehen können, vergleicht die Formel 2 Blätter, identifiziert Zellen mit deferenten Werten und zeigt die Unterschiede in den entsprechenden Zellen an. Bitte beachten Sie, dass im Differenzbericht die Daten (Zelle C4) durch Seriennummern dargestellt werden, wie sie im internen Excel-System gespeichert sind, was für die Analyse von Differenzen zwischen ihnen nicht sehr praktisch ist.
Hervorheben von Unterschieden zwischen 2 Blättern mit bedingter Formatierung
Um Zellen mit unterschiedlichen Werten in zwei Blättern mit der von Ihnen gewählten Farbe hervorzuheben, verwenden Sie die Funktion Excel bedingte Formatierung:

Markieren Sie im Arbeitsblatt, in dem Sie Unterschiede hervorheben möchten, alle verwendeten Zellen. Klicken Sie dazu auf die linke obere Zelle des verwendeten Bereichs, normalerweise A1, und drücken Sie Strg + Umschalt + Ende, um die Auswahl auf die zuletzt verwendete Zelle zu erweitern.
Klicken Sie auf der Registerkarte Start in der Gruppe Styles auf Bedingte Formatierung > Neue Regel und erstellen Sie eine Regel mit der folgenden Formel:
=A1<>Blatt2!A1
Dabei ist Sheet2 der Name des anderen Blattes, das Sie vergleichen.
Als Ergebnis werden die Zellen mit unterschiedlichen Werten mit der ausgewählten Farbe hervorgehoben:

Wenn Sie mit der bedingten Excel-Formatierung nicht sehr vertraut sind, finden Sie im folgenden Tutorial die detaillierten Schritte zur Erstellung einer Regel: Excel bedingte Formatierung basierend auf einem anderen Zellenwert.
Wie Sie sehen, ist es sehr einfach, zwei Excel-Tabellen mit Hilfe von Formeln oder bedingten Formaten zu vergleichen. Diese Methoden eignen sich jedoch aufgrund der folgenden Einschränkungen nicht für den Allround-Vergleich:
Sie finden Unterschiede nur in Werten, können aber keine Formeln oder Zellformatierungen vergleichen.

Sie können hinzugefügte oder gelöschte Zeilen und Spalten nicht identifizieren. Sobald Sie eine Zeile / Spalte in einem Blatt hinzufügen oder löschen, werden alle nachfolgenden Zeilen / Spalten als Unterschiede markiert.
Sie arbeiten auf Blattebene, können aber strukturelle Unterschiede auf Arbeitsmappenebene wie Blattzufügungen und -löschungen nicht erkennen.
Kopien einer freigegebenen Arbeitsmappe vergleichen und zusammenführen
Wenn es darum geht, verschiedene Versionen derselben Excel-Datei zusammenzuführen, ist die Funktion Vergleichen und Zusammenführen praktisch. Dies ist besonders nützlich, wenn mehrere Benutzer an derselben Excel-Arbeitsmappe arbeiten, da Sie so die Änderungen und Kommentare aller Benutzer gleichzeitig einsehen können. Um diese Funktion zu nutzen, müssen Sie die folgenden Vorbereitungen treffen:

Teilen Sie Ihre Excel-Arbeitsmappe, bevor Sie sie anderen Benutzern zur Verfügung stellen.
Um eine Arbeitsmappe freizugeben, klicken Sie einfach auf die Schaltfläche Arbeitsmappe freigeben auf der Registerkarte Review, aktivieren Sie in der Gruppe Changes das Kontrollkästchen Allow Changes by More than One User…, und klicken Sie auf OK. Erlauben Sie Excel, die Arbeitsmappe zu speichern, wenn Sie dazu aufgefordert werden. Wenn Sie die Funktion Änderungen verfolgen aktivieren, wird die Arbeitsmappe automatisch freigegeben.
Jede Person, die Änderungen an der gemeinsamen Arbeitsmappe vornimmt, muss eine Kopie (.xls- oder xlsx-Datei) unter einem eindeutigen Dateinamen speichern.
Jetzt, da alle ersten Vorbereitungen richtig getroffen wurden, sind Sie bereit, die Kopien einer gemeinsamen Arbeitsmappe zu kombinieren.

1. Aktivieren Sie die Funktion Arbeitsmappen vergleichen und zusammenführen in Ihrem Excel.

Obwohl die Funktion Arbeitsmappen vergleichen und zusammenführen in allen Versionen von Excel 2016, Excel 2013, Excel 2010 und niedriger verfügbar ist, wird dieser Befehl in Excel standardmäßig nirgendwo angezeigt. Um es zur Schnellstart-Symbolleiste hinzuzufügen, führen Sie die folgenden Schritte aus:
Öffnen Sie das Dropdown-Menü Schnellzugriff und wählen Sie Weitere Befehle.
Wählen Sie im Dialogfeld Excel-Optionen unter Befehle auswählen aus alle Befehle aus.
Scrollen Sie in der Liste der Befehle nach unten, um Arbeitsmappen zu vergleichen und zusammenzuführen, wählen Sie sie aus und klicken Sie auf die Schaltfläche Hinzufügen, um sie in den rechten Bereich zu verschieben.
Klicken Sie auf OK.

2. Arbeitsmappen vergleichen und zusammenführen

Wenn alle Benutzer die Arbeit mit Ihrer freigegebenen Excel-Arbeitsmappe abgeschlossen haben, können Sie alle Kopien in einer Datei zusammenführen.
Öffnen Sie die Primärversion der freigegebenen Arbeitsmappe.
Klicken Sie in der Symbolleiste des Schnellzugriffs auf den Befehl Arbeitsmappen vergleichen und zusammenführen.

Wählen Sie in dem erscheinenden Dialogfenster eine Kopie der gemeinsamen Arbeitsmappe aus, die Sie zusammenführen möchten. Um mehrere Kopien auszuwählen, halten Sie die Umschalttaste gedrückt, während Sie auf die Dateinamen klicken, und klicken Sie dann auf OK.

Erledigt! Die Änderungen aus jeder Kopie werden in einer einzigen Arbeitsmappe zusammengefasst.

3. Überprüfen Sie die Änderungen

Um alle Bearbeitungen von verschiedenen Benutzern auf einen Blick zu sehen, gehen Sie einfach wie folgt vor:
Wechseln Sie zur Registerkarte Review > Gruppe Changes und klicken Sie auf Track Changes > Highlight Changes.
Wählen Sie im Dialogfeld Änderungen hervorheben die Option Alle im Feld Wann, Alle im Feld Wer, deaktivieren Sie das Feld Wo, wählen Sie das Feld Änderungen hervorheben auf dem Bildschirm und klicken Sie auf OK.

Um die Zeile und die Spalten mit Unterschieden hervorzuheben, markiert Excel die Spaltenbuchstaben und Zeilennummern dunkelrot. Auf Zellenebene werden Bearbeitungen von verschiedenen Benutzern mit unterschiedlichen Farben markiert. Um zu sehen, wer eine bestimmte Änderung vorgenommen hat, fahren Sie einfach mit der Maus über die Zelle.

Hinweis. Wenn der Befehl Arbeitsmappen vergleichen und zusammenführen in Ihrem Excel ausgegraut ist, versuchen Sie höchstwahrscheinlich, verschiedene Excel-Dateien zu kombinieren. Bitte beachten Sie, dass die Funktion Arbeitsmappen vergleichen und zusammenführen es ermöglicht, nur Kopien derselben freigegebenen Arbeitsmappe zusammenzuführen.

Tools von Drittanbietern zum Vergleichen von Excel-Dateien

Wie Sie gerade gesehen haben, bietet Microsoft Excel eine Reihe von Funktionen zum Vergleichen von Daten in zwei oder mehr Arbeitsmappen. Aber keine der eingebauten Optionen reicht aus, um Excel-Tabellen, geschweige denn ganze Arbeitsmappen, umfassend zu vergleichen und alle Unterschiede in Werten, Formeln oder Formatierungen zu erkennen.

Wenn Sie also fortgeschrittene und wirklich effiziente Mittel benötigen, um zwei Excel-Dateien zu vergleichen, dann müssten Sie höchstwahrscheinlich eines der Tools von Drittanbietern verwenden, das speziell für den Vergleich, die Aktualisierung und das Zusammenführen von Excel-Tabellen und Arbeitsmappen entwickelt wurde. Nachfolgend finden Sie einen kurzen Überblick über einige Tools, die meiner Meinung nach in diesem Bereich am besten abschneiden.

Synkronizer Excel Vergleiche
Ablebits Vergleichstabellen für Excel
Florencesoft DiffEngineX
xlCompare
Change pro für Excel
Synkronizer Excel Vergleich: 3-in-1-Tool zum Vergleichen, Zusammenführen und Aktualisieren von Excel-Dateien
Das Synkronizer Excel Compare Add-In kann zwei Excel-Dateien schnell vergleichen, zusammenführen und aktualisieren, so dass Sie nicht mehr manuell nach Unterschieden suchen müssen.
Wenn Sie nach einer schnellen und zuverlässigen Methode suchen, um zwei Excel-Tabellen oder Arbeitsmappen zu vergleichen, werden Sie sicherlich die folgenden Funktionen von Synkronizer Excel Compare hilfreich finden:

  • Identifizierung der Unterschiede zwischen zwei Excel-Tabellen.
    Kombinieren Sie mehrere Excel-Dateien zu einer einzigen Version, ohne unerwünschte Duplikate zu erzeugen.
  • Hervorhebung der Unterschiede in beiden Blättern.
  • Nur die Unterschiede anzeigen, die für Ihre Aufgabe relevant sind.
  • Zusammenführung und Aktualisierung der Blätter.
  • Präsentation detaillierter und leicht verständlicher Differenzberichte.
  • Um einen ersten Eindruck von den Fähigkeiten und der Leistung von Synkronizer
  • Excel Compare zu bekommen, führen wir einige Feldtests durch.
  • Vergleichen Sie zwei Excel-Dateien auf Unterschiede.

Angenommen, Sie organisieren eine Veranstaltung und sammeln in Ihrer Excel-Tabelle Informationen über die Teilnehmer, wie z.B. Teilnehmername, Ankunftsdatum, Anzahl der Plätze usw. Außerdem haben Sie ein paar Manager in direktem Kontakt mit den Teilnehmern und der Datenbank, und als Ergebnis haben Sie zwei Versionen derselben Excel-Datei.
Okay, lassen Sie uns sehen, wie effizient Synkronizer unsere beiden Blätter vergleichen und Unterschiede zwischen ihnen identifizieren kann.
Um Synkronizer Excel Compare auszuführen, gehen Sie auf die Registerkarte Add-Ins und klicken Sie auf das Symbol Synchronizer 11.

Der Bereich Synkronizer wird im linken Teil Ihres Excel-Fensters angezeigt, wo Sie Folgendes tun müssen:
Wählen Sie 2 Arbeitsmappen zum Vergleichen aus:

Wählen Sie die zu vergleichenden Blätter aus.
Wenn die ausgewählten Arbeitsmappen gleichnamige Blätter haben, werden alle diese Blätter abgeglichen und automatisch zum Vergleich ausgewählt (wie die Teilnehmerblätter im unteren Screenshot).
Sie können Arbeitsblätter auch manuell auswählen oder das Add-In anweisen, Blätter nach anderen Kriterien abzugleichen, z.B. nach Arbeitsblatttyp – alle, geschützt oder versteckt.

Nachdem Sie die Blätter ausgewählt haben, öffnet das Synkronizer-Add-In sie Seite an Seite, vertikal oder horizontal angeordnet, wie in Excel’s View Side by Side Modus.
Wählen Sie eine der folgenden Vergleichsmöglichkeiten:
Vergleiche mit normalen Arbeitsblättern – die Standardoption, die in den meisten Fällen funktioniert.
Mit Link-Optionen vergleichen – wenn die ausgewählten Blätter keine neuen oder gelöschten Zeilen und Spalten enthalten, können Sie sie „1 zu 1“ vergleichen.
Als Datenbank vergleichen – empfohlen für den Vergleich von Blättern mit Datenbankstruktur.

Ausgewählte Bereiche vergleichen – wenn Sie nicht die gesamten Blätter vergleichen möchten, definieren Sie die zu vergleichenden Bereiche.
Wählen Sie die zu vergleichenden Inhaltsarten aus (optional).
Auf der Registerkarte Auswählen in der Gruppe Vergleichen können Sie den/die für Ihre aktuelle Aufgabe relevanten Inhaltstyp(en) auswählen:

Unter Inhalt können Sie Kommentare und Namen auswählen (zusätzlich zu Zellwerten, Formeln und berechneten Werten, die standardmäßig verglichen werden).
Unter Formate wählen Sie, welche Zellformate wie Ausrichtung, Füllung, Schriftart, Rand usw. Sie wählen.
Mit der Option Filter können Sie Unterschiede herausfiltern, die Sie nicht anzeigen möchten. So können Sie beispielsweise Groß-/Kleinschreibung, führende oder abschließende Leerzeichen, alle Formeln oder verschiedene Formeln mit dem gleichen Ergebnis, ausgeblendete Zeilen oder Spalten und mehr ignorieren.
Klicken Sie abschließend auf die große rote Schaltfläche Start in der Multifunktionsleiste und fahren Sie mit der Überprüfung der Ergebnisse fort.

Visualisierung und Analyse der Unterschiede

Normalerweise dauert es nur wenige Sekunden, bis Synkronizer 2 Blätter verglichen und zwei zusammenfassende Berichte auf der Registerkarte Ergebnisse präsentiert hat:
In einem zusammenfassenden Bericht sehen Sie alle Unterschiede auf einen Blick: Änderungen in Spalten, Zeilen, Zellen, Kommentaren, Formaten und Namen.
Um den detaillierten Differenzbericht anzuzeigen, klicken Sie einfach auf einen bestimmten Differenztyp im Summenbericht.
Der folgende Screenshot zeigt den zusammenfassenden Bericht (im oberen Teil des Ergebnisbereichs) und den Zelldifferenzbericht (im unteren Teil des Bereichs), die für unsere Musterblätter erstellt wurden:

Wenn Sie auf eine Differenz im Detailbericht klicken, werden die entsprechenden Zellen auf beiden Blättern ausgewählt (der folgende Screenshot zeigt nur ein Blatt, da genügend Platz für beide vorhanden ist :).

Darüber hinaus können Sie ein Differenz-Repot in einer separaten Arbeitsmappe erstellen, entweder standardmäßig oder per Hyperlink, und mit einem Mausklick zu einer bestimmten Differenz springen:

Vergleichen Sie alle Blätter in zwei Arbeitsmappen auf einmal.
Wenn die beiden Excel-Dateien, die Sie vergleichen, mehrere Blätter enthalten, werden alle übereinstimmenden Arbeitsblattpaare im Übersichtsbericht zur Ansicht angezeigt:

Hervorhebung von Unterschieden zwischen den Blättern
Standardmäßig markiert das Synkronizer Excel Compare Add-In alle gefundenen Unterschiede, wie im folgenden Screenshot:
Gelb – Unterschiede in den Zellwerten
Flieder – Unterschiede in den Zellformaten
Grün – eingefügte Zeilen

Um nur die relevanten Unterschiede hervorzuheben, klicken Sie auf der Registerkarte Ergebnisse auf die Schaltfläche Outline und wählen Sie die gewünschten Optionen aus:

Blätter aktualisieren und zusammenführen

Die Merge-Funktion ist definitiv eine der nützlichsten Funktionen des Synkronizer Excel Compare Add-Ins. Sie können einzelne Zellen übertragen oder verschiedene Spalten/Zeilen vom Quell- zum Zielblatt verschieben und Ihr Primärblatt in Sekundenschnelle aktualisieren lassen.
Um eine oder mehrere Unterschiede zu aktualisieren, wählen Sie diese im Fensterbereich des Synkronizers aus und klicken Sie auf eine der 4 Aktualisierungsschaltflächen – die erste und letzte Taste aktualisieren alle Unterschiede, während die zweite und dritte Taste nur ausgewählte Unterschiede aktualisieren (die Tastenpfeile zeigen die Übertragungsrichtung an):

Nun, das sind die wichtigsten Funktionen des Synkronizer-Add-Ins, aber es steckt sicherlich noch viel mehr dahinter. Willst du es mal versuchen? Eine Testversion steht hier zum Download bereit.
Synkronizer ist sicherlich Ihre Aufmerksamkeit wert, aber es ist nicht die einzige Möglichkeit, Dateien in Excel zu vergleichen. Es gibt eine Handvoll anderer Vergleichswerkzeuge, die im Wesentlichen den gleichen Funktionsumfang, aber in unterschiedlichen Implementierungen bieten.

Ablebits Vergleichstabellen für Excel

Die neueste Version unserer Ultimate Suite enthält über 40 neue Funktionen und Verbesserungen, von denen die aufregendste ist Compare Sheets – unser eigenes Tool zum Vergleichen von Arbeitsblättern in Excel.
Um den Vergleich intuitiver und benutzerfreundlicher zu gestalten, ist das Add-In so konzipiert:
Ein Schritt-für-Schritt-Assistent führt Sie durch den Prozess und hilft bei der Konfiguration verschiedener Optionen.
Sie können den für Ihre Datensätze am besten geeigneten Vergleichsalgorithmus auswählen.
Anstelle eines Differenzberichts werden die verglichenen Blätter im Modus Unterschiede überprüfen angezeigt, so dass Sie alle Unterschiede auf einen Blick sehen und einzeln verwalten können.

Nun, lassen Sie uns das Tool auf unseren Beispieltabellen aus dem vorherigen Beispiel ausprobieren und sehen, ob die Ergebnisse unterschiedlich sind.
Klicken Sie in der Gruppe Merge auf der Registerkarte Ablebits Data auf die Schaltfläche Compare Sheets:

Der Assistent erscheint und fordert Sie auf, die beiden Arbeitsblätter auszuwählen, die Sie für Unterschiede vergleichen möchten.
Standardmäßig sind die gesamten Blätter ausgewählt, aber Sie können auch die aktuelle Tabelle oder einen bestimmten Bereich auswählen, indem Sie auf die entsprechende Schaltfläche klicken:

  • Im nächsten Schritt wählen Sie den Vergleichsalgorithmus aus:
    Keine Schlüsselspalten (Standard) – eignet sich am besten für blattbasierte Dokumente wie Rechnungen oder Verträge.
  • Nach Schlüsselspalten – ist geeignet für spaltenorganisierte Blätter, die eine oder mehrere eindeutige Bezeichnungen wie Bestellnummern oder Produkt-IDs aufweisen.
  • Zellweise – am besten geeignet für den Vergleich von Tabellenkalkulationen mit gleichem Layout und gleicher Größe, wie z.B. Bilanzen oder Jahresberichte.
  • Tipp. Wenn Sie sich nicht sicher sind, welche Option die richtige für Sie ist, wählen Sie die Standardoption (Keine Schlüsselspalten).
  • Welchen Algorithmus Sie auch wählen, das Add-In findet alle Unterschiede, es markiert sie nur unterschiedlich (ganze Zeilen oder einzelne Zellen).

Im gleichen Schritt können Sie die gewünschte Spielart auswählen:
Erste Übereinstimmung (Standard) – vergleichen Sie eine Zeile in Blatt 1 mit der ersten gefundenen Zeile in Blatt 2, die mindestens eine passende Zelle aufweist.
Beste Übereinstimmung – vergleichen Sie eine Zeile in Blatt 1 mit der Zeile in Blatt 2, die die maximale Anzahl von übereinstimmenden Zellen hat.
Nur vollständige Übereinstimmung – finden Sie Zeilen in beiden Blättern, die in allen Zellen genau die gleichen Werte haben, und markieren Sie alle anderen Zeilen als unterschiedlich.
In diesem Beispiel werden wir nach der besten Übereinstimmung suchen, indem wir den Standardmodus Keine Schlüsselspalten vergleichen verwenden:

Geben Sie schließlich an, welche Unterschiede hervorgehoben und welche ignoriert werden sollen, und wie die Unterschiede markiert werden sollen.
Die Zellformatierung ist uns wichtig, deshalb wählen wir Unterschiede in der Formatierung anzeigen. Ausgeblendete Zeilen und Spalten sind irrelevant, und wir weisen das Add-In an, sie zu ignorieren:

Klicken Sie auf die Schaltfläche Vergleichen und lassen Sie dem Add-In einige Minuten Zeit, um Ihre Daten zu verarbeiten und die Sicherungskopien zu erstellen. Backups werden immer automatisch erstellt, so dass Sie sich keine Sorgen um die Sicherheit Ihrer Daten machen müssen.

Überprüfung und Zusammenführung von Unterschieden

Sobald die Arbeitsblätter bearbeitet wurden, werden sie in einem speziellen Modus zum Überprüfen von Unterschieden nebeneinander geöffnet, wobei die erste Differenz ausgewählt wird:

Auf dem obigen Screenshot werden die Unterschiede mit den Standardfarben hervorgehoben:
Blaue Zeilen – Zeilen, die nur in Blatt 1 (links) vorhanden sind.
Rote Zeilen – Zeilen, die nur in Blatt 2 (rechts) vorhanden sind.
Grüne Zellen – Differenzzellen in teilweise übereinstimmenden Zeilen.
Um Ihnen bei der Überprüfung und Verwaltung der Unterschiede zu helfen, hat jedes Arbeitsblatt eine eigene vertikale Symbolleiste. Für das inaktive Arbeitsblatt (links) ist die Symbolleiste deaktiviert. Um die Symbolleiste zu aktivieren, markieren Sie einfach eine beliebige Zelle auf dem entsprechenden Blatt.
Mit Hilfe dieser Symbolleiste gehen Sie die gefundenen Unterschiede einzeln durch und entscheiden, ob Sie sie zusammenführen oder ignorieren möchten:

Sobald der letzte Unterschied behoben ist, werden Sie aufgefordert, die Arbeitsmappen zu speichern und den Modus Review differences zu verlassen.
Wenn Sie die Bearbeitung der Unterschiede noch nicht abgeschlossen haben, aber vorerst eine Pause einlegen möchten, klicken Sie auf die Schaltfläche Exit Review Differences am unteren Rand der Symbolleiste und wählen Sie entweder zu:
Speichern Sie die vorgenommenen Änderungen und entfernen Sie die restlichen Differenzmarken, oder
Stellen Sie die ursprünglichen Arbeitsmappen aus den Sicherungskopien wieder her.

So vergleichen Sie zwei Excel-Tabellen mit unserem Tool (hoffentlich hat es Ihnen gefallen :) Wenn Sie neugierig sind, es zu testen, steht hier eine Testversion zum Download bereit.
xlCompare: Vergleichen und Zusammenführen von Arbeitsmappen, Tabellen und VBA-Projekten
Mit dem Dienstprogramm xlCompare können Sie zwei Excel-Dateien, Arbeitsblätter, Namen und VBA-Projekte vergleichen. Es identifiziert hinzugefügte, gelöschte und geänderte Daten und ermöglicht es Ihnen, Unterschiede schnell zusammenzuführen. Darüber hinaus bietet es die folgenden Optionen:
Finden Sie doppelte Datensätze zwischen zwei Arbeitsblättern und entfernen Sie sie.
Aktualisieren Sie alle vorhandenen Datensätze in einem Blatt mit Werten aus einem anderen Blatt.

Fügen Sie eindeutige (neue) Zeilen und Spalten von einem Blatt zum anderen hinzu.
Zusammenführen aller aktualisierten Datensätze von einer Arbeitsmappe zur anderen.
Sortieren Sie die Daten auf den Blättern nach der Schlüsselspalte.
Filtern Sie die Vergleichsergebnisse, um Unterschiede oder identische Datensätze anzuzeigen.
Markieren Sie die Vergleichsergebnisse mit Farben.
Florencesoft DiffEngineX: Excel-Arbeitsmappen für Unterschiede vergleichen
DiffEngineX ist ein weiteres Dienstprogramm, das Ihnen helfen kann, Unterschiede zwischen Zellwerten, Formeln, Kommentaren, Excel-Namen und VBA-Code zu erkennen. Es kann zwei Excel-Arbeitsmappen oder ausgewählte Blätter vergleichen.
DiffEngineX arbeitet mit xls, xlsx, xlsm und xlsb Dateien und unterstützt Excel 2013, Excel 2010, Excel 2007 und Excel 2003.

Change pro für Excel: Excel-Tabellen auf Desktop- und Mobilgeräten vergleichen
Mit Change pro für Excel können Sie zwei Tabellen sowohl in Desktop-Excel als auch auf mobilen Geräten mit optionalem serverbasiertem Vergleich vergleichen. Die Hauptmerkmale dieses Tools sind:
Finden Sie Unterschiede zwischen 2 Blättern in Formeln und Werten.
Identifizieren Sie Layoutänderungen, einschließlich hinzugefügter / gelöschter Zeilen und Spalten.
Erkennen Sie eingebettete Objekte wie Diagramme, Grafiken und Bilder.
Erstellen und drucken Sie Differenzberichte über Formel-, Wert- und Layoutunterschiede.
Filtern, sortieren und durchsuchen Sie den Differenzbericht über Schlüsseländerungen.
Vergleichen Sie Dateien direkt aus Outlook oder Dokumentenmanagementsystemen.
Unterstützung für alle Sprachen, einschließlich Multi-Byte.

Online-Dienste zum Vergleich von Excel-Dateien

Neben Desktop-Tools und Dienstprogrammen gibt es eine Reihe von Online-Diensten, mit denen Sie zwei Excel-Tabellen schnell auf Unterschiede vergleichen können, ohne Software auf Ihrem Computer zu installieren. Wahrscheinlich ist es nicht die beste Lösung in Bezug auf die Sicherheit, aber wenn Ihre Excel-Dateien keine sensiblen Informationen enthalten, warum nicht einen kostenlosen Online-Service für sofortige Ergebnisse nutzen?
Sie können beispielsweise XLComparator oder CloudyExcel ausprobieren oder andere ähnliche Dienste im Netz finden. So sieht der CloudyExcel-Dienst aus:

Sie laden einfach die beiden Excel-Arbeitsmappen hoch, die Sie vergleichen möchten, und klicken auf die Schaltfläche Find Difference am unteren Bildschirmrand. Im Handumdrehen werden die Unterschiede in zwei aktiven Blättern mit unterschiedlichen Farben hervorgehoben:

Nun, so können Sie Excel-Dateien auf Unterschiede vergleichen. Wenn keine der in diesem Tutorial beschriebenen Lösungen für Ihre Aufgabe geeignet ist, lesen Sie die folgenden Ressourcen, die andere Aspekte des Excel-Dateivergleichs behandeln. Und wenn Sie andere Möglichkeiten kennen, zwei Excel-Dateien zu vergleichen, sind Ihre Kommentare sehr willkommen. Ich danke dir für das Lesen und hoffe, dich nächste Woche in unserem Blog zu sehen!
Weitere Möglichkeiten zum Vergleichen und Zusammenführen von Daten in Excel
Vergleichen Sie zwei Spalten in Excel für Übereinstimmungen und Unterschiede – zeigt verschiedene Techniken, um zwei Spalten zu vergleichen und Übereinstimmungen und Unterschiede zwischen ihnen zu finden.

Konsolidieren Sie Daten in Excel & führen Sie mehrere Blätter zu einem zusammen – erklärt verschiedene Möglichkeiten, Blätter in Excel zu kombinieren – konsolidieren Sie Daten aus mehreren Arbeitsblättern, kombinieren Sie mehrere Blätter durch Kopieren ihrer Daten und führen Sie zwei Blätter über die Schlüsselspalte zusammen.
Assistent zum Zusammenführen von Tabellen für Excel – Abgleichen und Zusammenführen von zwei Blättern über die Schlüsselspalte(n).
Assistent zum Entfernen von Duplikaten für Excel – vergleichen Sie zwei Blätter für doppelte und eindeutige Werte.

Sportwetten: Glücklicherweise haben die ersten Kunden meist die besten Vorteile

Glücklicherweise haben die ersten Kunden meist die besten Vorteile. Daher ist im Wesentlichen auch der Inhalt aus einer Reinkultur entstanden, um damit auch Möglichkeiten zu erschaffen, die abseits des bisher Vorstellbaren liegt.

TOP 3 Anbieter - (Aktualisiert: 17.07.2019)


 
Bet3000

 
Wettbonus
150€

 
Jetzt Wetten!

 
Netbet

 
Wettbonus
100€

 
Jetzt Wetten!

 
10bet

 
Wettbonus
100€

 
Jetzt Wetten!

Wenn Wettanbieter um Kunden buhlen, dann lassen sie sich meist so Einiges einfallen. Vor allem im Bereich der Boni wird sehr viel versucht, um neue Kunden an zulocken. Es gibt sehr unterschiedliche Boni, die heute an Kunden geboten werden.

So ist zum Beispiel der Einzahlungsbonus in all seinen Varianten heute sehr beliebt.

Es stellt ein sehr beliebtes Modell dar, wie man Kunden zu einem Wettanbieter anlocken kann. Dabei erhält der neue Kunde heute die Möglichkeit, sich im Bereich von Sportwetten zu positionieren, wenn er einen bestimmten Betrag auf sein Konto beim Wettanbieter einzahlt. Die Einzahlung wird dem Kunden auch noch mit einer Prämie versüßt. Dadurch lassen sich auch sehr viele unterschiedliche Teile bearbeiten. Wetten mit Paypal Einzahlung Sehr oft ist der Bonus aber auch zweckgebunden. Somit muss der Kunde den Bonus für eine bestimmte Wette in einer Kategorie einsetzen. Dadurch lassen sich auch unterschiedliche Präferenzen ableiten. Viele Boni werden auch erst dann gutgeschrieben, wenn ein bestimmter Betrag nachgeschossen wird. Man muss also den Einzahlungsbonus öfters einsetzen und erhöht damit auch das Risiko, den gesamten Bonus wieder beim nächsten Spiel zu verlieren. Allerdings kann man es auch umgekehrt sehen, denn dadurch erhält man ja auch die Chance, den gesamten Bonus durch einen weiteren Gewinn zu vervielfältigen. Hier lassen sich also sehr unterschiedliche Szenarien entwickeln, die man so in dieser Form auch gar nicht finden kann.

Allerdings gibt es neben den sehr vielfältigen Boni auch noch weitere Anreize für neue und bestehende Kunden.

Für die Wettanbieter ist es sehr wichtig, ein langfristiges Standbein zu schaffen, um die Kunden beim Wetten zu halten. Es ist leider oft so, dass im Zuge von bestimmten großen sportlichen Events die Begeisterung bei den Kunden sehr groß ist, die Begeisterung aber dann wieder rasch abnimmt. Man versucht hier dann nur mehr, die Gewinne auf das eigene Bankkonto zu transferieren und wettet kein weiteres Mal mehr. Aus diesem Grund versuchen Wettanbieter auch vermehrt, für bestehende Kunden einen Anreiz zu verschaffen, damit sie auch weiterhin ihr Angebot zum Wetten zu nutzen. Neben einem Einzahlungsbonus und einem Willkommensbonus gibt es daher auch weitere Boni im Angebot vieler Wettanbieter. Eine weitere Möglichkeit besteht zum Beispiel darin, die Bearbeitungsgebühren zu erlassen. Dabei kommt dieser Vorteil vor allem jenen Kunden zugute, die ganz einfach schon sehr lange als Kunden dabei sind.