Программно записывать имена переменных вместе с их типом данных в Teradata, используя R? - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь записать фрейм данных, используя R для Teradata. Фрейм данных имеет широкий формат (более 100 столбцов), и запись в Teradata подразумевает объявление как имени, так и класса каждой переменной. Обратите внимание, что приведенные ниже данные служат только в качестве примера.

iris$integerRandom <- seq_along(iris$Sepal.Length) 
iris$Dates <- seq.Date(as.Date("2018-01-01"), by = "d", length.out = nrow(iris))
iris$Dates2 <- seq.Date(as.Date("2019-01-01"), by = "d", length.out = nrow(iris))
iris$Species <- as.character(iris$Species)
iris$characterRandom <- sample(letters, nrow(iris), replace = TRUE)

## Getting Numeric and Integer Names first

names_num <- names(iris)[which(sapply(iris, class) %in% c("integer", "numeric"))]
names_date <- names(iris)[which(sapply(iris, class) %in% "Date")]
names_character <- names(iris)[which(sapply(iris, class) %in% "character")]


## Generating variable names with corresponding variable types

paste(gsub("varchar(300)", '"varchar(300)"', gsub(",", " = varchar(300), ", toString(names_character))), "varchar(300)", sep = " = ")
paste(gsub(",", " = date", toString(names_date)), " = date")
paste(gsub("varchar(300)", '"float"', gsub(",", " = float, ", toString(names_num))), "float", sep = " = ")

В идеале, я хотел бы, чтобы желаемый результат сказал Species = "varchar (300)", characterRandom = "varchar (300)" и так далее. Обратите внимание, что порядок, в котором переменные важны, так как порядок имеет значение при объявлении имен и типов в Teradata (или в данном случае SQL), код, вероятно, будет работать для обоих инструментов. Таким образом, порядок имен переменных вместе с Sepal.Длина и конец с характером Random.

...