J'ai une table de base de données avec une colonne contenant des nombres distincts de 17 chiffres. Lorsque je demande à R de lire une partie ou la totalité de cette table dans un dataframe, il duplique certaines valeurs 4 ou 5 fois et en supprime d'autres. L'effet est qu'un tableau avec disons 17 valeurs uniques finira par en avoir 6. C'est bizarre. Cela se produit lorsque je lis les données à l'aide de la connexion RODBC ou lorsque je les enregistre dans un fichier csv et que je les charge de cette manière. Il s'agit bien d'un problème R car j'ai isolé le problème avec de fausses données :
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
C'est ce qui se passe lorsque je lis à partir de la base de données ou d'un CSV où je sais que la colonne contient des valeurs uniques. Merci de votre compréhension.
EDITAR:
Merci d'avoir mis en évidence le problème et la façon de le résoudre dans R. Le problème est toujours que R effectue cette transformation lors de la lecture des données. Même si je spécifie ma requête comme suit :
CAST(longnumber AS VARCHAR(50)) as 'target_column'
R encore le traite comme un entier trop long. Je dois écrire :
CAST(longnumber AS VARCHAR(50)) + 'S' as 'target_column'
pour que R le lise comme un champ de caractères, ce qui est tout ce dont j'ai besoin. Des idées ?