Saya sedang mengerjakan data sederhana seperti di bawah ini:

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

Saya mencoba mengambil entri di mana guru = 12 dan siswa = 409 . Saya menggunakan perintah berikut:

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

Saya tahu ini adalah perintah dasar, tetapi ketika saya menjalankannya, saya mendapatkan pesan galat berikut:

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

Saya mendapatkan kesalahan yang sama, bahkan ketika saya menjalankan:

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

Atau ketika saya menjalankan ini

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

Harap dicatat bahwa dalam dataset saya saat ini df$teacher dan df$student keduanya bilangan bulat. Saya ingin mengerti mengapa saya mendapatkan kesalahan ini. Saran apa pun akan sangat dihargai.

Output yang saya inginkan adalah:

teacher   student
  12        409
  12        409

Terima kasih!

1
Sandy 3 Juni 2021, 03:34

1 menjawab

Jawaban Terbaik

Kita hanya perlu tunggal =}

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

-keluaran

 teacher student
1      12     409
2      12     409

Dengan data asli OP, yang tidak diperbaiki, jadi, kita dapat menggunakan argumen {{x0} }`

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

Menurut ?sqldf, "name__class" digunakan dengan kelas Date sebagai contoh. Karena data asli OP tidak dibagikan, masih belum yakin mengapa itu berhasil

Metode = "Nama__Class" yang berarti bahwa kolom menyebut yang berakhir dalam __class dengan dua garis bawah di mana kelas adalah kelas R (seperti tanggal) dikonversi ke kelas itu dan porsi __class dihapus dari nama kolom.`

Data

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, 00:59