在 R 中,使用 read.csv.sql 读取特殊列
in R, read special columns with read.csv.sql
我正在尝试读取一个大的 csv 文件。事实上,我想要 select 一个使用名为 Race Color 的特殊列的子集。通过read.csv读取文件,我有head
library(sqldf)
df <- read.csv(file = 'df.txt', header = T, sep = ";")
head(df)
id Region Race Color ....
1 1 1
2 1 1
3 2 1
4 3 2
5 4 1
6 4 1
我想使用 read.csv.sql 来 selecting df 的子集而不使用 read.csv 文件。例如,我希望所有种族颜色都等于 1 的人。
使用 read.csv.sql,我有类似
的东西
>df <- read.csv.sql("df.txt", sql = "select * from file where Race Color = 1", sep=";", header=T, eol="\n")
但是我有以下错误
Error in sqliteSendQuery(con, statement, bind.data) :
error in statement: near "Color": syntax error
正在尝试
>df <- read.csv.sql("df.txt", sql = "select * from file where 'Race Color' = 1", sep=";", header=T, eol="\n")
我有零行的 df。
有什么解决办法吗?
R 在读入数据时自动将 .
添加到带有 space 的列名中以生成 Race.Color
,但 .
在 sql,这样会搞砸的。
sqldf
中有一个内置方法,使用方括号 ([Race.Color]
) 明确命名我们可以使用的列,这样我们就不会 运行 陷入该问题。您还可以使用转义引号:\"Race.Color\"
这应该有效:
library(sqldf)
read.csv.sql("test.csv", sql = "select * from file where [Race.Color] = 1", sep=";", header=T, eol="\n")
我正在尝试读取一个大的 csv 文件。事实上,我想要 select 一个使用名为 Race Color 的特殊列的子集。通过read.csv读取文件,我有head
library(sqldf)
df <- read.csv(file = 'df.txt', header = T, sep = ";")
head(df)
id Region Race Color ....
1 1 1
2 1 1
3 2 1
4 3 2
5 4 1
6 4 1
我想使用 read.csv.sql 来 selecting df 的子集而不使用 read.csv 文件。例如,我希望所有种族颜色都等于 1 的人。 使用 read.csv.sql,我有类似
的东西>df <- read.csv.sql("df.txt", sql = "select * from file where Race Color = 1", sep=";", header=T, eol="\n")
但是我有以下错误
Error in sqliteSendQuery(con, statement, bind.data) :
error in statement: near "Color": syntax error
正在尝试
>df <- read.csv.sql("df.txt", sql = "select * from file where 'Race Color' = 1", sep=";", header=T, eol="\n")
我有零行的 df。
有什么解决办法吗?
R 在读入数据时自动将 .
添加到带有 space 的列名中以生成 Race.Color
,但 .
在 sql,这样会搞砸的。
sqldf
中有一个内置方法,使用方括号 ([Race.Color]
) 明确命名我们可以使用的列,这样我们就不会 运行 陷入该问题。您还可以使用转义引号:\"Race.Color\"
这应该有效:
library(sqldf)
read.csv.sql("test.csv", sql = "select * from file where [Race.Color] = 1", sep=";", header=T, eol="\n")