1

私はSQLステートメントの使用にかなり慣れていませんが、SQLステートメントを使用して大きなテーブルから目的の列を選択し、それらをRにプルするのに少し問題があります。

csvファイルを取得して、選択した列をrに読み込みます。特に、9列目と10列目ごとに読み込みます。Rでは、次のようなものです。

read.csv.sql("myfile.csv", sql(select * from file [EVERY 9th and 10th COLUMN])

私のインターネットのトロールは、n番目ごとの行の選択は、次のようなMODを使用したSQLステートメントで実行できることを示唆しています(間違っている場合は修正してください)。

"SELECT *
        FROM   file
        WHERE  (ROWID,0) IN (SELECT ROWID, MOD(ROWNUM,9) OR MOD(ROWNUM,10)"

これを列に対して機能させる方法はありますか?前もって感謝します。

4

1 に答える 1

2

これにはread.csv read.csvで十分です。

# determine number of columns
DF1 <- read.csv(myfile, nrows = 1)
nc <- ncol(DF1)

# create a list nc long where unwanted columns are NULL and wanted are NA
colClasses <- rep(rep(list("NULL", NA), c(8, 2)), length = nc)

# read in
DF <- read.csv(myfile, colClasses = colClasses)

sqldf sqldfを使用するには、最後の行を次のように置き換えます。

nms <- names(DF1)
vars <- toString(nms[is.na(colClasses)])
DF <- fn$read.csv.sql(myfile, "select $vars from file")

更新:read.csv.sqlに切り替えました

更新2:修正。

于 2013-03-12T22:50:30.067 に答える