-1
嗨循環我有R中被稱爲「Puestos」一個數組,我想在陣列中的所有值傳遞到sqldf查詢,我嘗試這樣做:我想使用的R包sqldf
library(sqldf)
for (i in Puestos){
statement = sprintf("select mes, puesto, sum(numero) as numero,sum(faltas) as faltas
from M_C where puesto=%s group by mes, puesto",i)
sqldf(statement)}
但我只得到這個錯誤:
Error in sqliteSendQuery(con, statement, bind.data) :
error in statement: near "OFFICE": syntax error
「辦公室」是Puestos數組中的第一個元素的名稱的一部分,這裏是Puestos的頭:
head(Puestos)
PUESTO
BACK OFFICE DE REPORTERIA C
OPERADOR A
OPERADOR B
TELEOPERADOR(A) ATENCION A CLIENTES
TELEVENDEDOR(A)
BACK OFFICE DE CALIDAD A
head(M_C)
MES GENERO ESCOLARIDAD ESTATUS_ESCOLARIDAD PUESTO NUMERO FALTAS
4 F BACHILLERATO/PREPARATORIA CONCLUIDO BACK OFFICE DE REPORTERIA C 1 0
4 F BACHILLERATO/PREPARATORIA CONCLUIDO OPERADOR A 1 1
4 F BACHILLERATO/PREPARATORIA CONCLUIDO OPERADOR B 12 9
4 F BACHILLERATO/PREPARATORIA CONCLUIDO TELEOPERADOR(A) ATENCION A CLIENTES 11 3
4 F BACHILLERATO/PREPARATORIA CONCLUIDO TELEVENDEDOR(A) 51 38
4 F BACHILLERATO/PREPARATORIA EN CURSO OPERADOR B 1 0
dput(head(Puestos))
structure(list(PUESTO = structure(c(12L, 20L, 21L, 23L, 25L,
4L), .Label = c("Agente de Calidad", "AGENTE DE CALIDAD", "Back Office de Calidad A",
"BACK OFFICE DE CALIDAD A", "Back Office de Calidad B", "BACK OFFICE DE CALIDAD B",
"BACK OFFICE DE MOTIVACION C", "Back Office de Operaciones",
"BACK OFFICE DE OPERACIONES", "BACK OFFICE DE REPORTERIA B",
"Back Office de Reporteria C", "BACK OFFICE DE REPORTERIA C",
"Back Office de Reporteria D", "BACK OFFICE DE REPORTERIA D",
"BACK OFFICE DE VALIDADOR B", "BACK OFFICE DE VALIDADOR C", "BO-MOTIBBACK",
"Formador Operativo", "FORMADOR OPERATIVO", "OPERADOR A", "OPERADOR B",
"TECNICO", "TELEOPERADOR(A) ATENCION A CLIENTES", "TELEOPERADOR(A) TECNICO",
"TELEVENDEDOR(A)"), class = "factor")), .Names = "PUESTO", row.names = c(NA,
6L), class = "data.frame")
dput(head(M_C))
structure(list(MES = c(4L, 4L, 4L, 4L, 4L, 4L), GENERO = structure(c(1L,
1L, 1L, 1L, 1L, 1L), .Label = c("F", "M"), class = "factor"),
ESCOLARIDAD = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("BACHILLERATO/PREPARATORIA",
"LICENCIATURA/INGENIERIA", "POSGRADO", "SECUNDARIA", "TECNICO"
), class = "factor"), ESTATUS_ESCOLARIDAD = structure(c(1L,
1L, 1L, 1L, 1L, 2L), .Label = c("CONCLUIDO", "EN CURSO",
"PASANTE", "TRUNCO"), class = "factor"), PUESTO = structure(c(12L,
20L, 21L, 23L, 25L, 21L), .Label = c("Agente de Calidad",
"AGENTE DE CALIDAD", "Back Office de Calidad A", "BACK OFFICE DE CALIDAD A",
"Back Office de Calidad B", "BACK OFFICE DE CALIDAD B", "BACK OFFICE DE MOTIVACION C",
"Back Office de Operaciones", "BACK OFFICE DE OPERACIONES",
"BACK OFFICE DE REPORTERIA B", "Back Office de Reporteria C",
"BACK OFFICE DE REPORTERIA C", "Back Office de Reporteria D",
"BACK OFFICE DE REPORTERIA D", "BACK OFFICE DE VALIDADOR B",
"BACK OFFICE DE VALIDADOR C", "BO-MOTIBBACK", "Formador Operativo",
"FORMADOR OPERATIVO", "OPERADOR A", "OPERADOR B", "TECNICO",
"TELEOPERADOR(A) ATENCION A CLIENTES", "TELEOPERADOR(A) TECNICO",
"TELEVENDEDOR(A)"), class = "factor"), NUMERO = c(1L, 1L,
12L, 11L, 51L, 1L), FALTAS = c(0L, 1L, 9L, 3L, 38L, 0L)), .Names = c("MES",
"GENERO", "ESCOLARIDAD", "ESTATUS_ESCOLARIDAD", "PUESTO", "NUMERO",
"FALTAS"), row.names = c(NA, 6L), class = "data.frame")
我假設你需要在引號來包裝你的字符串值。就像:'puesto ='%s'' – MrFlick
是的,我試過了,但它不起作用。 – Angel
好吧,我會這樣做的。對不起,這是我的第一篇文章。 – Angel