в R читать специальные столбцы с помощью read.csv.sql

Я пытаюсь прочитать большой файл csv. Действительно, я хочу выбрать подмножество, используя специальный столбец с именем Race Color. Чтение файла через read.csv, у меня голова

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 для выбора подмножества 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 с нулевыми строками.

Любое решение?


person Vasco    schedule 28.09.2015    source источник


Ответы (1)


R автоматически добавляет . к именам столбцов с пробелом при чтении данных, чтобы сделать 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")
person jeremycg    schedule 28.09.2015