Ich versuche, eine Gesamtzahl von einem bestimmten Wert in einer großen Datenmenge zu finden. Insbesondere möchte ich eine neue Variable namens "Diabetes" erstellen, die mit 0/1 für Nein/Ja codiert ist. Hier ein Beispiel:Funktion nicht auf größere Datenmenge arbeiten
Test <- data.frame(
s_1_1 = c(1223, NA, 1223, NA, NA),
s_1_2 = c(NA, 1223, NA, NA, NA),
s_1_2 = c(NA, NA, NA, NA, NA))
Disease0 <- paste("s_1_", 1:2, sep = "")
Test$Tp2Diabetes_0_0 <- apply(Test, 1, function(Db) as.integer(any(Db[Disease0] == 1223, na.rm = TRUE)))
Wenn ich diesen Code auf meinem kleinen Beispiel ausführen es funktioniert gut und gibt mir die Ergebnisse, die ich will.
Das Problem ist, dass ich dies auf einem Datensatz von über 500k ausführen und es nicht die gewünschten Ergebnisse produziert. Zum Beispiel zeigt es, dass nur 200 Menschen von den 500k Diabetes haben, aber die gesamte Datenschaufenster zeigt, dass ich näher an 3.000 haben sollte. Ich verstehe nicht, was hier vorgeht und was ich falsch mache.
Vielleicht ist Ihr Datenmenge überprüfen. Wenn einer Ihrer Einträge als Text/Zeichen gespeichert wird, kann es sein, dass etwas Unsichtbares wie "1223" 'Aufzeichnungen Ihre Ergebnisse verfälscht. –
definitiv ein Typ Problem. Einige 1223s in Ihren Daten sind nicht numerisch. ein Wert wie String "1223" würde deine Funktion stören. – fhlgood
Danke für die Kommentare. Diese Variablen werden als ganze Zahlen klassifiziert. Ich habe versucht, alle zu numerisch zu konvertieren, sowie Whitespace zu trimmen, und ich habe die gleichen Ergebnisse erhalten. Irgendwelche Vorschläge, was man hier machen kann? Gibt es einen Befehl, den ich hinzufügen kann, der sowohl 1223 als auch "1223" enthält? Vielen Dank! – user7777508