Ich habe ein Datenframe mit wenigen Reihen von identischen Zeilennamen. Ich möchte NAs jeder zweiten Zeile durch die nicht-NA der identischen unmittelbaren vorherigen Zeile ersetzen. Wenn jedoch bereits ein Wert in der zweiten Zeile existiert, sollte dies nicht beeinflusst werden.Geändert: Ersetzen von Werten von Zeilen mit identischen Rownames in einem Datenrahmen
Bitte siehe unten:
df:
date 1 1 2 3 3
20040101 100 150 NA NA 140
20040115 200 NA 200 NA NA
20040131 170 NA NA NA NA
20040131 NA 165 180 190 190
20040205 NA NA NA NA NA
20040228 140 145 165 150 155
20040228 NA NA NA NA NA
20040301 150 155 170 150 160
20040315 NA NA 180 190 200
20040331 NA 145 160 NA NA
20040331 NA NA NA 175 180
ich die resultierende Datenrahmen sein wollen:
df_new:
date 1 1 2 3 3
20040101 100 150 NA NA 140
20040115 200 NA 200 NA NA
20040131 170 165 180 190 190
20040205 NA NA NA NA NA
20040228 140 145 165 150 155
20040301 150 155 170 150 160
20040315 NA NA 180 190 200
20040331 NA 145 160 175 180
ich versucht habe, die folgende for-Schleife , aber die Ergebnisse sind nicht wie gewünscht:
for (i in 2: nrow (df)) {
if(all(is.na(df[i, ]))){ df[i, ] = fill[(i-1), ]}
out [i,] < - df [i-1, ncol] }
Bitte leitet mich in dieser Hinsicht.
Dank Saba
Was sollte ich hinzufügen, um es schönes Format zu machen? –
Fügen Sie Beispiele Ihrer Daten mit 'dput()' in Ihre Frage ein. Um beispielsweise zehn Zeilen von df1 bereitzustellen, fügen Sie in die Ausgabe von 'dput (df1 [1:10,])' 'ein. Dadurch können Personen Ihre Daten einfach in ihre R-Konsole kopieren und einfügen. – eipi10
@ ZheyuanLi: Es ist nicht streng der Fall, wo für alle NAs von DF1 eine Nicht-NA von DF2 ist. In den meisten Fällen haben sowohl df1 als auch df2 NAs in identischen Reihen. Aber ich möchte nur diejenigen NAs von df1 ersetzen, die parallele Nicht-NAs von df2 verfügbar haben. –