R - Zählung in jeder Zeile die Anzahl der Spalten in der Zeile Nachbarschaft", die nur NA

Wie würden Sie erstellen ein Daten-frame einen Vektor, der für jede Zeile die Anzahl der Spalten, "NA" (oder einen benutzerdefinierten Wert) in dieser Zeile und die n Zeilen oben und m Zeilen weiter unten.

Also, wenn m = n = 1 (d.h., wie vielen Spalten in jeder Zeile sind NA und NA unmittelbar vor und nach) und mein dataframe ist

structure(list(X = 1:8, A = c(3L, NA, 10L, NA, 6L, NA, 5L, NA
), B = c(6L, NA, NA, NA, 8L, NA, 13L, NA), C = c(NA, 12L, 14L,  
NA, NA, NA, 9L, NA), D = c(NA, NA, NA, NA, NA, 11L, 7L, NA)), .Names = c("X", 
"A", "B", "C", "D"), class = "data.frame", row.names = c(NA, 
-8L))

d.h.

 t X  A  B  C  D
1 1  3  6 NA NA 
2 2 NA NA 12 NA 
3 3 10 NA 14 NA 
4 4 NA NA NA NA
5 5  6  8 NA NA
6 6 NA NA NA 11
7 7  5 13  9  7
8 8 NA NA NA NA

Möchte ich den Vektor

count
0
1
2
1
1
0
0
0

(wenn die ersten und letzten Einträge sind NA's, das ist in Ordnung). Ich bin versucht zu imitieren eine COUNTIFS Funktion in Excel, d.h. COUNTIFS(B2:F2,"",B3:F3,"",B4:F4,"") für Zeile 3.

  • Ich verstehe nicht, wie deine Beschreibung erzeugt das gewünschte Ergebnis. Wie kommt es, dass Graf hat 1 in Zeile 2?
  • Spalte D hat eine NA in Zeile 2 und in den Zeilen 1 und 3. Die anderen Spalten nicht, so count ist 1 gibt.
  • Ich glaube, was Sie meinen, ist: nehmen wir an, wir betrachten Zeile i Spalte j: wenn Spalte j hat NAs für die n Zeilen vor und m Zeilen nach der Zeile i zählen wir es. Also für die zweite Reihe, nur die NA in der 'D' - Spalte hat eine NA unmittelbar oberhalb und unterhalb es.
  • Ja, mathematischen.Kaffee ist korrekt.
  • könnte ich eine Klarstellung - in der Zeile 1 die NA in Spalte D die NA, nachdem Sie, aber keiner vor, weil es keine vorherigen Zeile - Sie wollen diese auf 0 zurück, immer? (d.h. die ersten und letzten Elemente Ihrer count Vektor immer 0?)
  • Return 0 oder NA, aber ich bin nicht viel Aufhebens. Der "wahre" Wert in dieser Zeile ist, dass der Zustand ist bedeutungslos, aber ich bin wohl mit 0. Für höhere m oder n das gleiche gilt für die ersten n und die letzten m Zeilen.

InformationsquelleAutor Hugh | 2013-04-09
Schreibe einen Kommentar