如何将原始向量从 sqlQuery 转换为数据框中的单个字符串?
How to convert raw vector from sqlQuery to a single string in dataframe?
在我的工作场所,R 与 Dremio 集成在一起,我可以使用 RODBC::sqlQuery() 函数访问 Dremio 中的表格。表有大约十万个条目。我正在使用此函数创建 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))
我希望单元格值是单个字符串 ID,如下所示
"56fd36af6318772a09359fe3"
这样我就可以将它用作与其他表的匹配条件。有什么办法吗?
你可以使用 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
在我的工作场所,R 与 Dremio 集成在一起,我可以使用 RODBC::sqlQuery() 函数访问 Dremio 中的表格。表有大约十万个条目。我正在使用此函数创建 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))
我希望单元格值是单个字符串 ID,如下所示
"56fd36af6318772a09359fe3"
这样我就可以将它用作与其他表的匹配条件。有什么办法吗?
你可以使用 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