gpt4 book ai didi

sql - R在读取数据帧时复制大整数

转载 作者:行者123 更新时间:2023-12-05 00:46:19 25 4
gpt4 key购买 nike

我有一个数据库表,其中有一列包含不同的 17 位数字。当我要求 R 将此表的一部分或全部读入数据帧时,它会将某些值复制 4 或 5 次并丢弃其他值。结果是,一个表有 17 个唯一值最终会变成 6。这很奇怪。当我使用 RODBC 连接读入数据或者我是否将它们保存到 csv 并以这种方式加载它们时,就会发生这种情况。这绝对是一个 R 问题,因为我已经用假数据隔离了这个问题:

base_num <- "9600000005206"

# Now create a vector of unique numbers in character format
x <- paste0(base_num, seq(5680, 5760, 1))

x

x
[1] "96000000052065680" "96000000052065681" "96000000052065682"
"96000000052065683" "96000000052065684" "96000000052065685"
"96000000052065686"
[8] "96000000052065687" "96000000052065688" "96000000052065689"
"96000000052065690" "96000000052065691" "96000000052065692"
"96000000052065693"
[15] "96000000052065694" "96000000052065695" "96000000052065696"
"96000000052065697" "96000000052065698" "96000000052065699"
"96000000052065700"

# Convert them to numeric
# ta-da! Duplicate values and dropped values
as.numeric(x)

[1] 96000000052065680 96000000052065680 96000000052065680
96000000052065680 96000000052065680 96000000052065680 96000000052065680
[8] 96000000052065680 96000000052065696 96000000052065696
96000000052065696 96000000052065696 96000000052065696 96000000052065696
[15] 96000000052065696 96000000052065696 96000000052065696
96000000052065696 96000000052065696 96000000052065696 96000000052065696

这就是当我从数据库或 CSV 中读取时发生的情况,我知道该列包含唯一值。谢谢。

编辑:

感谢您指出问题以及如何在 R 中修复它。问题仍然是 R 在读入数据时正在完成此转换。即使我将查询指定为:

CAST(longnumber AS VARCHAR(50)) as 'target_column'

R 仍然 将其视为太长的整数。我必须写:

CAST(longnumber AS VARCHAR(50)) + 'S' as 'target_column'

为了让 R 将其作为字符字段读入,这就是我所需要的。有什么想法吗?

最佳答案

尝试使用 integer64:

library(bit64) 
as.integer64(x)

关于sql - R在读取数据帧时复制大整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54401839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com