Ich arbeite an einfachen Daten wie folgt:

teacher student
  12      409
  43      403
  12      415
  12      409
  67      311
  19      201

Ich versuche, die Einträge abzurufen, in denen lehrer = 12 und student = 409 ist. Ich verwende den folgenden Befehl:

library(sqldf)
sqldf('SELECT * 
      FROM df
      WHERE teacher == 12 and student == 409')

Ich weiß, dass es ein grundlegender Befehl ist, aber wenn ich es renne, erhalte ich die folgende Fehlermeldung:

Error in asfn(rs[[i]]) : need explicit units for numeric conversion

Ich bekomme den gleichen Fehler, auch wenn ich renne:

# Without the and condition
sqldf('SELECT * 
      FROM df
      WHERE teacher == 12')

Oder wenn ich das renne

# Single equal sign
sqldf('SELECT * 
      FROM df
      WHERE teacher = 12')

Bitte beachten Sie, dass in meinem aktuellen Dataset df$teacher und df$student beide Ganzzahlen sind. Ich möchte verstehen, warum ich diesen Fehler bekomme. Jeder Rat wäre sehr dankbar.

Meine gewünschte Ausgabe ist:

teacher   student
  12        409
  12        409

Vielen Dank!

1
Sandy 3 Juni 2021 im 03:34

1 Antwort

Beste Antwort

Wir brauchen nur Single =

library(sqldf)
sqldf('SELECT * 
      FROM df
      WHERE teacher = 12 and student = 409')

-Ausgabe

 teacher student
1      12     409
2      12     409

Mit den Originaldaten der OP, das nicht behoben wurde, können wir das Argument method verwenden`

sqldf('SELECT * 
      FROM df
      WHERE teacher = 12 and student = 409', method = 'name__class')

Gemäß ?sqldf wird das {"name__class" mit {{Date -Zeilen als Beispiel verwendet. Da die Originaldaten des OP nicht geteilt werden, ist es immer noch nicht sicher, warum es funktioniert hat

Methode = "NAME__CLASS", wodurch diese Spaltennamen, die in __CLASS mit zwei Unterstrichen enden, an denen die Klasse ein R-Klasse (z. B. Datum) enden, in diese Klasse umgewandelt werden, und der __CLASS-Abschnitt wird aus dem Spaltennamen entfernt .`et ..`

Daten

df <- structure(list(teacher = c(12L, 43L, 12L, 12L, 67L, 19L), student = c(409L, 
403L, 415L, 409L, 311L, 201L)), class = "data.frame", row.names = c(NA, 
-6L))
1
akrun 3 Juni 2021 im 00:59