Löschen Sie Zeilen mit Duplikaten basierend auf einer Spalte, die von der Anzahl der NAs in verschiedenen Spalten abhängt

Esther

Ich möchte Zeilen löschen, in denen Spalte a doppelte Werte enthält, basierend auf der Anzahl der NAs in anderen Spalten. Dies ist ähnlich, aber ich kann die zählenden NAs nicht dazu bringen, mit den dortigen Lösungen zu arbeiten.

Löschen von Zeilen, die in einer Spalte dupliziert wurden, basierend auf den Bedingungen einer anderen Spalte

Hier ist mein Spielzeugdatensatz:

df1 <- data.frame(a = c("x","y","y","z","x", "z"), b = c(1,2,NA,4,8,3), c = c(NA,2,2,NA,NA,4), d= c(1:4,NA,NA))

was gibt:

  a  b  c  d
1 x  1 NA  1
2 y  2  2  2
3 y NA  2  3
4 z  4 NA  4
5 x  8 NA NA
6 z  3  4 NA

Ich möchte nur Zeilen mit eindeutigen Werten in Spalte a behalten und nur die Zeilen mit der geringsten Anzahl von NAs in den Spalten b & c (ohne NAs in Spalte d).

Dies ist der Code, den ich mir ausgedacht habe:

df1 %>%
 mutate(NAs= apply(is.na(cbind(b,c)), 1, sum)) %>%     
 group_by(a) %>%
 top_n(n=1, -NAs)

Mein Problem ist, dass top_n mehr als eine Zeile zurückgibt, wenn es ein Unentschieden gibt. Im Falle eines Unentschieden möchte ich nur, dass die erste Reihe zurückgegeben wird. Und es gibt wahrscheinlich einen besseren Weg, um mutierte Spalten auszuwählen als cbind. Ich brauche auch nicht die "NAs" -Variable, die ich mit mutate erstellt habe. Meine gewünschte Ausgabe ist folgende:

  a  b  c  d
  x  1 NA  1
  y  2  2  2
  z  3  4 NA
arg0naut91

@markus schlug vor, dass dies auch eine Antwort sein könnte. Vielleicht ist es wahr, da es hilfreich sein kann, den Code im Falle von kurz zu halten dplyr, da Sie sonst oft recht ausführliche Skripte erhalten.

Der Hauptteil meiner Meinung nach ist jedoch, rowSumswie bereits erwähnt.

df1 %>% 
arrange(a, rowSums(is.na(.[, c("b", "c")]))) %>% 
distinct(a, .keep_all = TRUE)

  a b  c  d
1 x 1 NA  1
2 y 2  2  2
3 z 3  4 NA

PS Wenn die Geschwindigkeit ist Ihre Sorge, dann in der Tat würde ich versuchen , so wenig zu verwenden dplyrVerben wie möglich, wie zum Beispiel des Ansatz mit nur arrange& distinctist 3x schneller als andere Ansätze mit group, slice, top_n, filteretc.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    Glassfish v3.0.1 im Vergleich zu Oracle GlassFish Server 3.0.1 - Gibt es einen technischen Grund, die kommerzielle Version zu verwenden?

  2. 2

    Wie schließe ich mehrere Ordner mit der Variablen EXTRA_ARGS aus?

  3. 3

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  4. 4

    Modbus Python Schneider PM5300

  5. 5

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  6. 6

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

  7. 7

    Wie füge ich eine Spalte in einer Zeile in der Ansible Jinja2-Vorlage mit der for-Schleife hinzu?

  8. 8

    ElasticSearch - Knotensperren konnten nicht abgerufen werden

  9. 9

    Unity Build-Fehler: Der Name 'EditorUtility' ist im aktuellen Kontext nicht vorhanden

  10. 10

    Wie vergleicht man scala.xml-Knoten richtig?

  11. 11

    Wie kann man eine Multi-Container-Anwendung in Steuerkarten erstellen?

  12. 12

    Wie Verwenden von Httpclient mit jedem SSL-Zertifikat, egal wie „schlecht“ es ist

  13. 13

    HTTPS-Verbindung mit Moneris-Servern in Curl

  14. 14

    Elasticsearch startet nicht nach dem Laden in viele Daten

  15. 15

    Schneller Algorithmus zum Suchen nach Teilzeichenfolgen in einer Zeichenfolge

  16. 16

    So übergeben Sie eine Variable in json, um Daten zu erhalten

  17. 17

    Hervorheben der SQL-Syntax in Visual Studio 2017

  18. 18

    Unterschied zwischen einfachen und doppelten Anführungszeichen in Javascript

  19. 19

    ElasticSeach Auto Complete mit dem Vervollständigungsvorschlag, um das vollständige Dokument zurückzugeben

  20. 20

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  21. 21

    Bester Crawler, um festzustellen, ob er mit Technologien gebaut wurde?

heißlabel

Archiv