Entfernen Sie Datenspalten basierend auf den Bedingungen in R

Ich muss Spalten in meinem Datenframe entfernen, der über 4000 Spalten und 180 Zeilen enthält. Die Bedingungen, unter denen ich die Spalte im Datenframe entfernen möchte, sind: (i) Entfernen Sie die Spalte, wenn weniger als zwei Werte / Einträge in vorhanden sind diese Spalte (ii) Entfernen Sie die Spalte, wenn die Spalte keine zwei aufeinander folgenden (nacheinander folgenden) Werte enthält. (iii) Entfernen Sie die Spalte mit allen Werten als NA. Ich habe Bedingungen angegeben, unter denen eine Spalte gelöscht werden soll. Hier geht es nicht nur darum, eine Spalte anhand ihres Namens wie in "Wie löscht man eine Spalte in data.table?" Zu finden. Ich illustriere wie folgt:

A       B    C   D  E
0.018  NA    NA  NA NA
0.017  NA    NA  NA NA
0.019  NA    NA  NA NA
0.018  0.034 NA  NA NA
0.018  NA    NA  NA NA
0.015  NA    NA  NA 0.037
0.016  NA    NA  NA 0.031
0.019  NA    0.4 NA 0.025
0.016  0.03  NA  NA 0.035
0.018  NA    NA  NA 0.035
0.017  NA    NA  NA 0.043
0.023  NA    NA  NA 0.040
0.022  NA    NA  NA 0.042

Gewünschter Datenrahmen:

A       E
0.018   NA
0.017   NA
0.019   NA
0.018   NA
0.018   NA
0.015   0.037
0.016   0.031
0.019   0.025
0.016   0.035
0.018   0.035
0.017   0.043
0.023   0.040
0.022   0.042

Wie kann ich diese drei Bedingungen in einen Code integrieren? Ich würde mich über Ihre Hilfe in dieser Hinsicht freuen. Reproduzierbares Beispiel

structure(list(Month = c("Jan-2000", "Feb-2000", "Mar-2000", 
"Apr-2000", "May-2000", "Jun-2000"), A.G.L.SJ.INVS...LON..DEAD...13.08.15 = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ABACUS.GROUP.DEAD...18.02.09 = c(0.00829384766220866, 
0.00332213653674028, 0, 0, NA, NA), ABB.R..IRS. = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)), .Names = c("Month", 
"A.G.L.SJ.INVS...LON..DEAD...13.08.15", "ABACUS.GROUP.DEAD...18.02.09", 
"ABB.R..IRS."), class = c("data.table", "data.frame"), row.names = c(NA, 
-6L), .internal.selfref = <pointer: 0x0000000001c90788>)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage