2016-04-27 10 views
1

私はRの中で、NULLでないすべての非X.1変数を選択するためにsqldfを使って、 "11/12/2015"と9AMでループクエリを実行したいと思います。例:sqldfのR sprintfのような

StartDate    X.1 
11/12/2015 09:14  A 
11/12/2015 09:36   
11/12/2015 09:54  A 

日は、他のクエリから

nullob<-0 
dayminnull<-as.numeric(sqldf("SELECT substr(Min(StartDate),1,03)as hari  from testes")) # this produce "11/12/2015" 
    for (i in 1 : 12){ 
    dday<-mdy(dayminnull)+days(i) #go to next day 
    sqlsql <- sprintf("SELECT count([X.1]) FROM testes where StartDate like '% \%s 09: %'", dday) 
    x[i]<-sqldf(sqlsql) 
    nullob<-nullob+x[i] 
} 

を生成し、その変数であり、それはエラーが付属しています:開始日精巣FROMのsprintfでエラーが発生しました( "SELECT COUNT([X.1]) 「%% sの09パーセント」」、のように:。 認識できないフォーマット仕様 『%』 は

+0

sprintfの代わりにfn $を使用することをお勧めします。 sqldfのホームページの例5を参照してください:https://github.com/ggrothendieck/sqldf –

答えて

3

それはスーパーマニュアルの明確な、しかし%フォローではありません事前にあなたに感謝HELLPください。 %によって編集された、つまり%%は、sprintfにリテラル%を使用するように指示する方法です。私たちは、かなり簡単にこれをテストすることができます。

クエリ文字列の場合
sprintf("%% %s %%", "hi") 
[1] "% hi %" 

、これは動作するはずです:

sprintf("SELECT count([X.1]) FROM testes where StartDate like '%% %s 09: %%'", dday) 

?sprintfから:

文字列fmtは、通常の文字が含まれています出力文字列 に渡され、またで動作する変換仕様引数は...によって提供されます。許容される変換 の指定は、%で始まり、 の文字のいずれかで終わり、aAdifeEgGosxX%となります。

... [aAdifeEgGosxX上のドキュメント]

  • %:これらの文字は、以下のタイプを表すリテラル%(下記の追加の書式文字のいずれも、この場合には許可されません)。
+0

これは機能します!ありがとうございました – Elbert