Meine Frage basiert auf dieser question.R: Füllen und/oder Duplizieren von Zeilen basierend auf anderen Spalten
Ich habe Daten wie folgt. Ich möchte die Zellen füllen, indem ich zuerst nach unten schaue und dann nach oben schaue, solange die Person gleich ist. Im Falle von bom = A möchte ich die Zeilen wie gezeigt ausfüllen. Aber im Fall von bom = B, da die type_p Spalte unterschiedlich ist, mag ich Zeilen kopieren und das Gefühl, die Rohlinge
bom=c(rep("A",4),rep("B",3))
Part=c("","lambda","beta","","tim","tom","")
type_p=c("","sub","sub","","sub","pan","")
ww=c(1,2,3,4,1,2,3)
df=data.frame(bom,Part,type_p,ww)
> df
bom Part type_p ww
1 A 1
2 A lambda sub 2
3 A beta sub 3
4 A 4
5 B tim sub 1
6 B tom pan 2
7 B 3
Die endgültigen Daten, die ich will, sind, wie unten
bom Part type_p ww
1 A lambda sub 1
2 A lambda sub 2
3 A beta sub 3
4 A beta sub 4
5 B tim sub 1
6 B tim sub 2
7 B tim sub 3
5 B tom pan 1
6 B tom pan 2
7 B tom pan 3
________________________________________Update 1
Die Logik, die ich möchte, ist wie folgt. Bitte denken Sie daran, dass meine Daten sehr groß sind und ich Tausende von Werten in jeder Spalte habe.
bom und ww Spalten werden immer bevölkert/in eingehenden Daten gefüllt
- Überprüfen Sie, ob ein Eintrag in der Spalte bom mehr als 1 Wert in der Spalte type_p
- hat Wenn es nur 1-Wert ist dann Leerstellen füllen in den Spalten type_p und ww, indem zuerst nach unten und dann nach oben geschaut wird. In diesem Fall hat bom = A nur einen Wert in type_p (sub)
- Wenn ein Eintrag in der Spalte bom mehr als 1 eindeutigen Wert in der Spalte type_p hat, dann erstellen Sie weitere Sätze der gleichen Zeilen des bom, so dass die Gesamtsätze werden gleich verschiedenen Werten in der Spalte type_p für diesen bom. In diesem Fall bom = B hat zwei Werte in type_p (Unter- und pan)
- Fill-Rohlinge in type_p und ww Spalten, indem zuerst blickte nach unten und dann oben schaut (Blick auf die Quellzeile Werte aufzufüllen)
================================================= =========== Update 2
Nach Schritt 3 würde der Datenrahmen aussehen wie unten
> df
bom Part type_p ww
1 A lambda sub 1
2 A lambda sub 2
3 A beta sub 3
4 A beta sub 4
5 B tim sub 1
6 B 2
7 B 3
8 B 1
9 B tom pan 2
10 B 3
Dies ist ein sehr lösbares Problem, aber Ihr Beispiel folgt nicht Ihrer Logik - Sie müssen um Schritt 3 genauer wissen, und wie Zeilen im duplizierten Fall aufgefüllt werden. Ich würde vorschlagen, in Ihrem Beispiel auch Zwischendatenrahmen zu zeigen (das könnte Ihnen auch helfen, das Problem in Ihrem Kopf zu lösen) – Chris
Ich habe Update 2 hinzugefügt. – user2543622
Das ist, was ich dachte - so scheint es, als verstößt dies gegen Ihr Prinzip. Sollte Zeile 8 nicht "Tim Sub" sein? – Chris