Как преобразовать необработанный вектор из sqlQuery в одну строку в кадре данных?
На моем рабочем месте R интегрирован с Dremio, и я могу получить доступ к таблицам в Dremio с помощью функции RODBC::sqlQuery(). Таблицы содержат около ста тысяч записей. Я создаю фрейм данных таблиц SQL, используя эту функцию, но некоторые строки хранят данные в другом формате. Я прочитал, что функция sqlQuery преобразует двоичные типы SQL в список необработанных векторов, поэтому я получаю значение ячейки следующим образом:
as.raw(c(0x56, 0xfd, 0x36, 0xaf, 0x63, 0x18, 0x77, 0x2a, 0x09, 0x35, 0x9f, 0xe3))
dput(df)
structure(list(`_Id` = structure(list(as.raw(c(0x56, 0xfd, 0x36,
0xaf, 0x63, 0x18, 0x77, 0x2a, 0x09, 0x35, 0x9f, 0xe3)), as.raw(c(0x56,
0xfd, 0x37, 0x07, 0x63, 0x18, 0x77, 0x2a, 0x09, 0x35, 0x9f, 0xeb
)), as.raw(c(0x56, 0xfd, 0x38, 0x7a, 0x63, 0x18, 0x77, 0x2a,
0x09, 0x35, 0xa0, 0x07)), as.raw(c(0x56, 0xfd, 0x38, 0x8b, 0x63,
0x18, 0x77, 0x2a, 0x09, 0x35, 0xa0, 0x0e)), as.raw(c(0x56, 0xfd,
0x38, 0x9d, 0x63, 0x18, 0x77, 0x2a, 0x09, 0x35, 0xa0, 0x12))), class = "ODBC_binary")), class = "data.frame", row.names = c(NA,
5L))
Я хочу, чтобы значение ячейки было идентификатором одной строки как "56fd36af6318772a09359fe3"
так что я могу использовать его в качестве критерия соответствия с другими таблицами. Есть ли способ сделать это?
1 ответ
Решение
Вы можете использовать dplyr
library(dplyr)
df$`_Id` %>%
sapply(., function(x) { paste0(x, collapse = "") }) %>%
as.data.frame(string_id=as.character(.), stringsAsFactors=FALSE)
# 1 56fd36af6318772a09359fe3
# 2 56fd37076318772a09359feb
# 3 56fd387a6318772a0935a007
# 4 56fd388b6318772a0935a00e
# 5 56fd389d6318772a0935a012