Ich habe folgende Daten:Wie eindeutige Zeilen und einzigartige Beobachtungen in einem data.frame zu identifizieren, basierend auf Zeitvariable
d <- data.frame(id=c(1,2,3,4,5,6,7),
year=c(1999,1999,1999,2000,2000,2000,2000),
var1=c(1,1,2,1,4,1,8),
var2=c(1,1,2,1,5,2,0),
var3=c(0,0,0,0,7,0,0))
> d
id year var1 var2 var3
1 1 1999 1 1 0
2 2 1999 1 1 0
3 3 1999 2 2 0
4 4 2000 1 1 0
5 5 2000 4 5 7
6 6 2000 1 2 0
7 7 2000 8 0 0
Ich mag jede Zeile der data.frame bewerten und ein Punktzahl Rückkehr in eine neue Variable namens 'comb'.
Wenn eine Zeile eine Kombination unter var1-var3 hält, die:
- nie in den vergangenen Jahren beobachtet (aber Elemente sind) -> zuordnen comb = 1
- enthält ein Element, das nicht gesehen wird in den vergangenen Jahren -> assign Kamm = 2
- nie in den vergangenen Jahren beobachtet und hält ein neues Element -> assign Kamm = 3
- in den vergangenen Jahren beobachtet -> assign Kamm = 0
Einige Nebennoten:
- Die Reihenfolge des Auftretens keine Rolle spielt (1,1,2 == 1,2,1)
- Doppelte Kombinationen im selben Jahr können gleich
In den Beispieldaten, dies sollte wie folgt aussehen:
d2 <- data.frame(id=c(1,2,3,4,5,6,7),
year=c(1999,1999,1999,2000,2000,2000,2000),
var1=c(1,1,2,1,4,1,8),
var2=c(1,1,2,1,5,2,0),
var3=c(0,0,0,0,7,0,0),
comb=c(3,3,3,0,3,1,2))
> d2
id year var1 var2 var3 comb
1 1 1999 1 1 0 3
2 2 1999 1 1 0 3
3 3 1999 2 2 0 3
4 4 2000 1 1 0 0
5 5 2000 4 5 7 3
6 6 2000 1 2 0 1
7 7 2000 8 0 0 2
beachten sie, dass die zweite Reihe Kamm zugeordnet = 3, weil es das erste Jahr beobachten wir, dass combinatio ns. Wenn diese Beobachtung in Jahr = 200 (wie Zeile 4) war, wird ihr eine Null zugewiesen.
Ist das möglich? Jede Hilfe wird sehr geschätzt!
In Ihrer Ausgabe scheint die zweite Zeile bereits in diesem Jahr vorhanden sein, warum ist nicht 0? – adaien
Können Sie detaillierte Notizen in die Ausgabe schreiben, um zu beschreiben, wie sie aussehen soll? – InfiniteFlashChess
@adiana: Ich möchte jede doppelte Beobachtung in einem bestimmten Jahr gleich kennzeichnen. –