R 軟體 sqldf 套件:INSERT, UPDATE, CREATE TABLE AS SELECT

教 R 課程時剛好有同學詢問,這裡分享一下除了常用的 SELECT 之外,sqldf 套件如何執行 INSERT, UPDATE, 與 CREATE TABLE AS SELECT

1. INSERT

> query = c(“INSERT INTO iris VALUES (4,4,4,4,’setosa’)”,”SELECT * FROM iris”)
> iris2 = sqldf(query)
> tail(iris2,3)

149 6.2 3.4 5.4 2.3 virginica
150 5.9 3.0 5.1 1.8 virginica
151 4.0 4.0 4.0 4.0 setosa

2. UPDATE

> query = c(“UPDATE iris SET [Sepal.Length]=10 WHERE [Sepal.Length] = 5.1 AND [Sepal.Width]=3.5”,
“SELECT * FROM iris”)
> iris2 = sqldf(query)
> head(iris2,3)

Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 10.0 3.5 1.4 0.2 setosa
2  4.9 3.0 1.4 0.2 setosa
3  4.7 3.2 1.3 0.2 setosa

3. CREATE TABLE AS SELECT

> query = c(“CREATE TABLE tmp AS SELECT * FROM iris WHERE  [Sepal.Length] > 4.7”,
“SELECT * FROM tmp”)
> iris2 = sqldf(query)
> dim(iris2)

[1] 139 5

關於 3 的補充:其實最快的方式,是

iris2 = sqldf(“SELECT * FROM iris WHERE  [Sepal.Length] > 4.7”)

上面的範例只是 demo sqldf 可與傳統 SQL “CREATE TABLE AS” 語法相容

註:
iris 資料檔因為前 4 個變數的名稱有包含英文據點 “.”, 但這符號在 SQL 有階層用途,所以需用 [ …. ] 以避免誤判