valeurs numériques négatives: arguments d'importation format txt

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

ameni melki
Messages : 40
Enregistré le : 24 Fév 2021, 14:54

valeurs numériques négatives: arguments d'importation format txt

Messagepar ameni melki » 19 Aoû 2021, 12:17

Bonjour,

J'ai une base de données sous format txt, j'utilise ce code pour l'importer dans r:

Code : Tout sélectionner

data <- read_delim("lien/data.txt",  "|", escape_double = FALSE, locale = locale(decimal_mark = ",")
                    col_types = cols(`Montant de la dépenses` = col_number()),
                   trim_ws = TRUE)
.

J'ai remarqué que r transforment les valeurs numérique négatifs en positifs, en fait il enlève le signe "-".

Quand j'importe ma base sous format xlsx, il garde les valeurs avec signe négatif. Le problème est uniquement quand j'importe la base de txt.

Est ce qu'il y a un argument à ajouter dans mon code d'import pour qu’il garde les valeurs avec signe négatif sans les changer en positifs?

Merci beaucoup

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: valeurs numériques négatives: arguments d'importation format txt

Messagepar Pierre-Yves Berrard » 19 Aoû 2021, 12:28

Bonjour,
Essayer col_double() ou col_integer() à la place de col_number() ?
PY

ameni melki
Messages : 40
Enregistré le : 24 Fév 2021, 14:54

Re: valeurs numériques négatives: arguments d'importation format txt

Messagepar ameni melki » 19 Aoû 2021, 13:43

Merci pour votre retour,

Ceci ne marche pas, quand je met col_integer(), il remplace toute la colonne par NA, et quand je met col_double(), il remplace uniquement les chiffres négatifs par NA et laisse le reste .

J'ai fais un petit test en prenant uniquement les 10 premières lignes de mon fichier txt qui contient des valeurs négatives, je l'ai importé dans r, alors ça fonctionnait, il a garder le signe"-".

Néo moins, avec le fichier total ça marche pas, je ne sais pas pourquoi, il enlève toujours le signe"-".

Je ne trouve pas d'explication logique de ce changement.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: valeurs numériques négatives: arguments d'importation format txt

Messagepar Mickael Canouil » 19 Aoû 2021, 14:43

Bonjour,

La colonne contient probablement pas le "bon" séparateur décimal (ou un autre élément "étrange"), hors vous obligez readr::read_delim à convertir quoiqu'il trouve dans un format numérique, si le format du fichier est mal défini, cela aboutit à NA pour toutes les conversions chaîne de caractère vers numérique.

Le parser de readr (vroom) est plutôt efficace, que donne les commandes suivantes ?

Code : Tout sélectionner

read_delim("lien/data.txt",  delim "|")
read_delim("lien/data.txt",  delim "|"locale locale(decimal_mark ",")) 


Si le fichier est un fichier Excel, pourquoi ne pas importer directement celui-ci avec readxl par exemple ?

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Michaël Delorme
Messages : 67
Enregistré le : 04 Avr 2016, 10:21

Re: valeurs numériques négatives: arguments d'importation format txt

Messagepar Michaël Delorme » 19 Aoû 2021, 15:01

Le signe moins est-il un « vrai » signe moins ?

Code : Tout sélectionner

library(readr)

>
 parse_number("-1.2")
[
1] -1.2
> parse_number("–1.2")
[
1] 1.2
> parse_number("—1.2")
[
1] 1.2

Les tirets demi-cadratin (Unicode U+2013) ou cadratin (Unicode U+2014) peuvent poser des problèmes...

ameni melki
Messages : 40
Enregistré le : 24 Fév 2021, 14:54

Re: valeurs numériques négatives: arguments d'importation format txt

Messagepar ameni melki » 19 Aoû 2021, 15:31

Le signe moins est-il un « vrai » signe moins ?


Oui c'est bien un signe moins, car qu'on je convertie mon fichier txt dans excel j’obtiens bien les valeurs négatifs avec "-".

Je suis obligée d'importer le fichier txt car je travaille sur une big data et excel est limité à un nombre de lignes.

Il y a surement un problème de format <- pour vérifier j'ai essayé d'importer par le bouton "import dataset"(from text), au début il prend la variable quantitatif en tant que caractère et il met 0 à la place de décimale, (après je change le décimale par ",") mais il ne prends pas en considération les "-".

en appliquant le code

Code : Tout sélectionner

data <- read_delim("lien/data.txt",
                 delim=  "|", escape_double = FALSE, locale = locale(decimal_mark = ","),
                   trim_ws = TRUE)


j'obtiens ce message d'erreur
Warning message:
One or more parsing issues, see `problems()` for details

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: valeurs numériques négatives: arguments d'importation format txt

Messagepar Mickael Canouil » 20 Aoû 2021, 07:36

ameni melki a écrit :
Le signe moins est-il un « vrai » signe moins ?

Oui c'est bien un signe moins, car qu'on je convertie mon fichier txt dans excel j’obtiens bien les valeurs négatifs avec "-".

Euh, ça veut rien dire, Excel converti bien les noms de gènes en date ...
Ce n'est pas parce-que Excel semble avoir bien parser le contenu que c'est le cas et dans le cas présent, vous travaillez sur R avec un fichier txt, donc le résultat de Excel n'a aucune importance pour solutionner votre problème.

ameni melki a écrit :en appliquant le code

Code : Tout sélectionner

data <- read_delim("lien/data.txt",
                 delim=  "|", escape_double = FALSE, locale = locale(decimal_mark = ","),
                   trim_ws = TRUE)


j'obtiens ce message d'erreur
Warning message:
One or more parsing issues, see `problems()` for details

Et donc que donne problems() ?

Que donne ?

Code : Tout sélectionner

dta <- read.delim("lien/data.txt", sep = "|")
str(dta)


Avez-vous essayer de ne lire qu'une partie du fichier (10, 100, etc. premières lignes) puis de s'assurer du type des colonnes via str() ?

Si c'est une base de donnée, pourquoi ne pas directement accéder à celle-ci depuis R ?

En l'absence d'un exemple minimal pour reproduire votre problème, ça va être très laborieux de vous aider ...
Mickaël
mickael.canouil.fr | rlille.fr

ameni melki
Messages : 40
Enregistré le : 24 Fév 2021, 14:54

Re: valeurs numériques négatives: arguments d'importation format txt

Messagepar ameni melki » 20 Aoû 2021, 08:19

Bonjour,

Merci beaucoup pour votre aide précieuse.

J'ai suivi vos conseils, j'ai appliquée le code

Code : Tout sélectionner

dta <- read.delim("lien/data.txt", sep = "|")
str(dta)


et j'ai comparé avec le fichier txt, en fait il y a une anomalie dans le fichier, les signes des montants sont à droite
2413,24-
, c'est pour ça le "-" disparait quand je convertie en numérique, malheureusement les valeurs négatifs sont au milieu de la base c'est pour ça je n'ai pas vu les signes qui sont mal renseignés.

il faut alors corriger le fichier txt en mettant les moins à gauche des montants

Vous m'avez énormément aidez, merci beaucoup.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité