2016-09-16 7 views
0

Ich habe eine lächerliche For-Schleife Frage, und ich entschuldige mich im Voraus, aber ich kann es nicht herausfinden. Hier ist eine Tabelle:Kopieren von Zeichendaten nach Zeilen

 Site  Date Software EPFU LABO 
3 Site 10 20160517  BCID 70 210 
4 Site 10 20160518  BCID NA NA 
5   20160519  BCID NA NA 
6   20160520  BCID NA NA 
7   20160521  BCID NA NA 
8   20160522  BCID NA NA 
9 Site 11 20160517  BCID 2 139 
10 Site 11 20160518  BCID NA 9 
11   20160519  BCID NA NA 
12   20160520  BCID NA NA 
13   20160521  BCID NA NA 
14   20160522  BCID NA NA` 

Wie kann ich die Lücken unter „Seite 10“ mit Text füllen, der sagt „Seite 10“, bis sie „Site 11“ erreicht, an welchem ​​Punkt der Zyklus wiederholt sich mit dem Text „Site 11 "und so weiter ... Jede Hilfe wäre willkommen. Site ist momentan eine Zeichenklasse, aber ich kann es zu einem Faktor machen, wenn das das Durcheinander vereinfacht. Ein zusätzliches Problem besteht darin, dass die "leeren" Zellen tatsächlich ein Bereich von "", "" und "*" sind, was dieses Durcheinander vereinfachen wird.

+0

Ich hatte (und un-tat), um das "Duplikat" von http://stackoverflow.com/questions/14655286/replace -missing-value-with-previous-value (was im Wesentlichen die Lösung von @ joy ist), da Sie den zusätzlichen Schritt machen müssen, diese Leerzeichen in 'NA' zu verwandeln, bevor Sie einfach 'na.locf() verwenden können ' – hrbrmstr

Antwort

3

Dies sollte es tun:

library(zoo) 
data$Site[data$Site == ""] <- NA 
data$Site2 <- na.locf(data$Site,na.rm = FALSE) 
+0

Ich hatte einen seltsamen Fehler mit dieser zweiten Zeile, also habe ich das Zeug benutzt, das Joy gepostet hat und es hat funktioniert. Musste nur sicherstellen, dass alle Leerzeichen == NA. Vielen Dank! – NoobR

+1

@NoobR - oops Ich hatte einen Tippfehler. Es ist jetzt behoben. Danke, dass du mir von dem Fehler erzählst –

+0

Ich grabe es. Das wird gehen. Vielen Dank! – NoobR

2

na.locf() ist dein Freund. Es wird als "Generische Funktion zum Ersetzen jeder NA durch die jüngste Nicht-NA davor beschrieben".

Versuchen:

install.packages("zoo") 
df$Site<-zoo::na.locf(df$Site) 
Verwandte Themen