Ich arbeite daran, eine Matrix der fehlenden für eine SQL-Datenbank, bestehend aus 5 Tabellen und fast 10 Jahren Daten zu erstellen. Ich habe eine ODBC-Konnektivität eingerichtet und verwende das RODBC-Paket in R als meine Arbeitsumgebung. Ich versuche, eine Funktion zu schreiben, die eine Anzahl von Zeilen für jedes Jahr für jede Tabelle, eine Anzahl und Prozent der Nullwerte (Werte nicht vorhanden) in einem bestimmten Jahr für eine bestimmte Tabelle und eine Anzahl und Prozent der fehlenden() Fragen übersprungen/nicht beantwortet) Werte für eine gegebene Tabelle. Ich arbeite mit dem unten stehenden Code und versuche, ihn auf eine Variable zu bringen, die dann in eine Funktion umgewandelt wird, sobald sie funktioniert. Wenn ich diesen Code (siehe unten) ausführe, scheint es jedoch nicht zu funktionieren, und ich glaube, das Problem liegt darin, dem Zeichen für null, NA
, einen ganzzahligen Wert zuzuweisen. Ich bin diese Nachricht bekommen, wenn zur Liste versucht, in der Funktion vars:Probleme beim Zählen Null und fehlende Werte (und die Unterscheidung zwischen den beiden) mit RODBC-Paket
Fehler in as.environment (po): kein Element namens „22018 245 [Microsoft] [ODBC SQL Server Driver] [SQL Server] Fehler bei der Konvertierung beim Konvertieren des Varchar-Wertes 'NA' in den Datentyp int. " auf der Suchliste.
Auch wenn ich versuche, die Umgebung für die Funktion zu finden, gibt R NULL
zurück. Ich möchte der bereits existierenden Variablen nicht unbedingt einen neuen Wert zuweisen, und ich bin neu in SQL, aber ich versuche, etwas in diese Richtung zu tun If X = 'NA'
dann Y = 1
sonst 0
. Ich erhalte die folgende Fehlermeldung, wenn ich versuche, die letzten 2 Zeilen ausführen, um die Prozent Vars zu schaffen:
Fehler bei eval (Ersatz (expr), Daten, enclos = parent.frame()): ungültig 'envir' Argument des Typs 'Zeichen'
Irgendein Einblick?
test1 < - sqlquery (Kanal „wählen
[EVENT_YEAR] AS 'YEAR',
COUNT(*) AS 'TOTAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE = 'NA' THEN 1 ELSE 0 END) AS 'NULL_VAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE = -1 THEN 1 ELSE 0 END) AS 'MISS_VAL'
from [GA_CMH].[dbo].[BIRTHS]
GROUP BY [EVENT_YEAR]
ORDER BY [EVENT_YEAR]")
test1$nullpct<-with(test1, NULL_VAL/TOTAL)
test1$misspct<-with(test1, MISS_VAL/TOTAL)
Thank du! Das hat es behoben! –