Angenommen, ich habe mehrere Spalten in einem Datenrahmen, die das gleiche Konzept messen, aber in verschiedenen Methoden (zB gibt es mehrere Arten von IQ-Tests, und Schüler könnten eine haben sie oder gar keine). Ich möchte die verschiedenen Methoden in einer einzigen Spalte kombinieren (offensichtlicher Anwendungsfall für tidyr).tidyr :: versammeln na.rm mit fehlenden Daten
Wenn die Daten so etwas wie diese:
mydata <- data.frame(ID = 55:64,
age = c(12, 12, 14, 11, 20, 10, 13, 15, 18, 17),
Test1 = c(100, 90, 88, 115, NA, NA, NA, NA, NA, NA),
Test2 = c(NA, NA, NA, NA, 100, 120, NA, NA, NA, NA),
Test3 = c(NA, NA, NA, NA, NA, NA, 110, NA, 85, 150))
ich natürlich so etwas wie dies möchte ausführen (beachten Sie, dass ich na.rm = TRUE, um nicht über die viele, viele NA in meinen Daten verwenden ihre eigenen Reihen erhalten):
library(tidyr)
tests <- gather(mydata, key=IQSource, value=IQValue, c(Test1, Test2, Test3), na.rm = TRUE)
tests
Geben Sie mir:
ID age IQSource IQValue 1 55 12 Test1 100 2 56 12 Test1 90 3 57 14 Test1 88 4 58 11 Test1 115 15 59 20 Test2 100 16 60 10 Test2 120 27 61 13 Test3 110 29 63 18 Test3 85 30 64 17 Test3 150
Das Problem ist, dass ich einen Schüler (ID = 62), die keine IQ-Ergebnisse in einer der drei hat, und ich möchte nicht ihre anderen Daten verlieren (die Daten in der ID und Alter Säulen).
Gibt es eine Möglichkeit zu unterscheiden, in Tidyr, Ja, ich möchte NA entfernen, wo ich Daten in mindestens einer Spalte habe Ich sammle, aber gleichzeitig Datenverlust zu verhindern, wenn alle die Säulen zu sammeln sind NA)
Ich wählte dies als die richtige Antwort B/C der Einfachheit, Einhaltung der Ordinate und Erweiterung über die ursprüngliche Frage hinaus. Alle gegebenen Antworten waren jedoch großartig und hilfreich! Danke allen! – Joy