1

スタックオーバーフローの専門家の皆様、こんにちは。

次のようなarテーブルの行を削除するためにsqldfを使用しようとしています:

structure(list(Similarity = c(999L, 888L, 756L, 879L, 567L, 567L), Peak = c(797L, 833L,999L, 798L, 834L, 444L), Formula = structure(c(4L,3L, 4L, 1L, 2L, 2L), .Label = c("C12H26S", "C16H19NO", "C2H8O2Si","C9H13NO2"), class = "factor")), .Names = c("Similarity", "Peak","Formula"), class = "data.frame", row.names = c(NA, -6L))

私の目標は、次のように数式列に「SI」が表示される行を削除することです。

structure(list(Similarity = c(999L, 756L, 879L, 567L, 567L), 
Peak = c(797L, 999L, 798L, 834L, 444L), Formula = structure(c(3L, 
3L, 1L, 2L, 2L), .Label = c("C12H26S", "C16H19NO", "C9H13NO2"
), class = "factor")), .Names = c("Similarity", "Peak", "Formula"
), class = "data.frame", row.names = c(NA, -5L))

私はsqldfステートメントを試しました:

sqldf("DELETE * FROM PO_raw WHERE Formula='Si'")

しかし、もちろん、「Si」だけの行はないので、うまくいきません。私は sqldf の初心者ですが、これはおそらく構文のエラーであると思われます。ウェブで検索しましたが、例が見つかりませんでした。

なにか提案を?これはsqldfでも可能ですか?

乾杯、

フランシスコ

4

1 に答える 1

4

次のように、LIKE とワイルドカードを使用します。

> sqldf(c("DELETE FROM PO_raw WHERE Formula like '%Si'", "select * from main.PO_raw"))
  Similarity Peak  Formula
1        999  797 C9H13NO2
2        756  999 C9H13NO2
3        879  798  C12H26S
4        567  834 C16H19NO
5        567  444 C16H19NO

(ところで: LIKE に関する興味深い質問)

于 2012-12-10T15:19:55.673 に答える