IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

[débutante] extraire et ne conserver que certaines données


Sujet :

R

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut [débutante] extraire et ne conserver que certaines données
    Bonjour,

    je dispose d'une série de données dont la première colonne est des dates au format "dd.mm.yyyy hh:mm" (pas de mesure), et les quinze colonnes suivantes sont des températures prises en quinze profondeurs différentes d'un forage au pas de temps indiqué par la première colonne.
    J'aimerais pouvoir déterminer à partir de quelle profondeur mes températures restent négatives en permanence (donc toute la colonne comportant des températures négatives). Je peine à trouver la fonction nécessaire à cette opération, le "if" ne semble pas adapté puisque le message d'erreur me dit qu'il teste seulement un élément de ma colonne au lieu de la colonne entière.
    Ensuite, j'aimerais ne conserver que cette colonne, ainsi que celle précédente.
    Quelqu'un pourrait-il m'indiquer dans quel sens prendre le problème? En vous remerciant.

    Florence

  2. #2
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut
    Salut,

    Il nous faudrait plus de détails c'est-à-dire code + données.
    Si tu regardes l'aide sur la fonction subset, tu devrais avancer...
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    subset(airquality, Temp > 80, select = c(Ozone, Temp))
    Bon courage,

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Et bien déjà merci habasque.

    Voici une partie de mon jeu de données (désolée je ne sais pas comment l'insérer de façon formelle en fait):

    Dates X0.30 X0.50 X0.70 X0.90 X1.10 X1.40 X1.70 X2.00
    1 2010-04-12 12:00:00 -7.91 -8.11 -8.17 -8.18 -8.23 -8.05 -7.96 -7.86
    2 2010-04-12 15:00:00 -7.56 -8.19 -8.45 -8.50 -8.56 -8.46 -8.35 -8.18
    3 2010-04-12 18:00:00 -7.62 -7.99 -8.33 -8.46 -8.55 -8.46 -8.34 -8.17
    4 2010-04-12 21:00:00 -8.13 -7.99 -8.25 -8.41 -8.52 -8.45 -8.33 -8.17
    5 2010-04-13 00:00:00 -9.11 -8.25 -8.25 -8.36 -8.50 -8.42 -8.33 -8.16
    6 2010-04-13 03:00:00 -10.08 -8.69 -8.37 -8.36 -8.47 -8.41 -8.33 -8.16
    7 2010-04-13 06:00:00 -10.77 -9.13 -8.56 -8.41 -8.47 -8.41 -8.32 -8.16
    8 2010-04-13 09:00:00 -10.32 -9.38 -8.77 -8.50 -8.49 -8.40 -8.31 -8.15
    et dont la str:

    'data.frame': 3039 obs. of 16 variables:
    $ Dates : POSIXlt, format: "2010-04-12 12:00:00" "2010-04-12 15:00:00" ...
    $ X0.30 : num -7.91 -7.56 -7.62 -8.13 -9.11 ...
    $ X0.50 : num -8.11 -8.19 -7.99 -7.99 -8.25 -8.69 -9.13 -9.38 -8.95 -8.27 ...
    $ X0.70 : num -8.17 -8.45 -8.33 -8.25 -8.25 -8.37 -8.56 -8.77 -8.82 -8.65 ...
    $ X0.90 : num -8.18 -8.5 -8.46 -8.41 -8.36 -8.36 -8.41 -8.5 -8.58 -8.59 ...
    $ X1.10 : num -8.23 -8.56 -8.55 -8.52 -8.5 -8.47 -8.47 -8.49 -8.52 -8.55 ...

    Je cherche a déterminer la dernière colonne (elles indiquent des profondeurs en m) où il y a des températures positives, et la première où les températures sont toutes négatives. Mon but final est d'interpoler la profondeur à laquelle le front de températures positives pénètre, mais bon, déjà arriver à conserver ces deux colonnes c'est une bonne première étape.

    Pour ce qui est du code, et bien j'ai du mal à le formuler, mais je vais essayer avec ce subset déjà.
    Merci, et si avec ça c'est plus clair pour m'orienter, je prends tous les conseils :-)


    Florence

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Alors personnellement, votre deuxième message m'a plus embrouillée qu'autre chose et je ne suis pas sûre d'avoir bien compris ce que vous cherchez à faire...

    Citation Envoyé par Florence Magnin Voir le message
    mais bon, déjà arriver à conserver ces deux colonnes c'est une bonne première étape.
    Si votre jeu de données est stocké dans un data.frame appelé "mydata" par exemple (jeu de données appelé "toto.txt" dans mon exemple et avec comme séparateur de champ la tabulation), vous pouvez accéder à une colonne donnée soit par le numéro correspondant soit par son nom, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    mydata<-read.table("toto.txt",header=TRUE,sep="\t")
    mydata
                   Dates  X0.30 X0.50 X0.70 X0.90 X1.10 X1.40 X1.70 X2.00
    1 2010-04-12 12:00:00  -7.91 -8.11 -8.17 -8.18 -8.23 -8.05 -7.96 -7.86
    2 2010-04-12 15:00:00  -7.56 -8.19 -8.45 -8.50 -8.56 -8.46 -8.35 -8.18
    3 2010-04-12 18:00:00  -7.62 -7.99 -8.33 -8.46 -8.55 -8.46 -8.34 -8.17
    4 2010-04-12 21:00:00  -8.13 -7.99 -8.25 -8.41 -8.52 -8.45 -8.33 -8.17
    5 2010-04-13 00:00:00  -9.11 -8.25 -8.25 -8.36 -8.50 -8.42 -8.33 -8.16
    6 2010-04-13 03:00:00 -10.08 -8.69 -8.37 -8.36 -8.47 -8.41 -8.33 -8.16
    7 2010-04-13 06:00:00 -10.77 -9.13 -8.56 -8.41 -8.47 -8.41 -8.32 -8.16
    8 2010-04-13 09:00:00 -10.32 -9.38 -8.77 -8.50 -8.49 -8.40 -8.31 -8.15
     
     
    mydata[,2]
    [1]  -7.91  -7.56  -7.62  -8.13  -9.11 -10.08 -10.77 -10.32
     
     
    mydata$X0.30
    [1]  -7.91  -7.56  -7.62  -8.13  -9.11 -10.08 -10.77 -10.32
    Si cela vous pose des difficultés, je ne saurais que trop vous conseiller de commencer par lire certains tutoriels de base sur R, dont certains sont disponibles ici.

    Cela dit, n'hésitez pas à nous donner d'autres explications concernant votre problème actuel.
    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  5. #5
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut
    Salut,

    Je t'avoue que la formulation de ton problème n'est pas très claire.

    Regardes du côté de la fonction which par exemple si tu veux trouver les indices de tes températures positives. Par exemple, sur la première colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    which(tonJeuDeDonnees$X0.30 > 0)

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Ok, je vais donc essayer de formuler plus clairement le problème.
    Ce que je cherche à faire est:

    1) trouver à partir de quelle date des températures positives sont enregistrée pour la première profondeur (X0.30), donc à partir de quand X0.30 > 0 et obtenir cette date (avec une fonction print? paste?.
    2) trouver la profondeur maximale (quelle colonne) à laquelle une température positive est enregistrée, et à quelle date celle-ci est enregistrée (quelle ligne).

    j'ai donc pensé quelque chose comme pour 1):

    df <- dataframe

    for (i in 2:nrow(df)) { # un moyen de lire ligne par ligne à partir dela
    # seconde?
    if (i > 0)
    { print(paste( .... # et là il faudrait que s'inscrive sur ma console la
    # date (ce qu'il y a dans la première colonne
    # de cette ligne). Mais peut - être faudrait-il utiliser
    # une fonction stop, ou alors, un "while" tant que i < 0
    # continuer à lire ligne par ligne et dès que i >0 "stop"?

    Bref, comme vous le voyez je suis vraiment novice et maitrise mal ces boucles et la formulation des fonctions. Donc si vous avez des pistes....
    Merci en tt cas pour l'attention accordée à ce petit problème.

    Florence

  7. #7
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut
    D'une manière générale, évite les boucles. et il faudrait que tu lises la documentation R pour partir sur de bonnes bases.

    Pour trouver à partir de quand X0.30 > 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    id_date_prof_pos <- which(df$X0.30 > 0)
    print(df$X0.30[min(id_date_prof_pos)])

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    En effet, je DOIS absolument me documenter. Mais j'avoue avoir du mal à trouver les bonnes références. Pour les opérations de base ça va (lire les données et calculs simples), alors en effet je devrais éviter les boucles pour le moment.

    Pour revenir au code, merci du conseil:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      id_date_prof_pos <- which(df$X0.30 > 0)
      print(df$X0.30[min(id_date_prof_pos)])
    et j'avais déjà essayé avec ce "min" pour obtenir ma date de début.
    Seulement j'obtiens ici la valeur de température et non celle de la date associée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id_date_prof_pos <- which(df$X0.30 > 0)
    >   print(df$X0.30[min(id_date_prof_pos)])
    [1] 0.17
    J'ai essayé du côté de "rownames" mais ça me renvoie "NULL" ou "numeric", bref c'est pas ce que je cherche.

    Comment chercher une ligne spécifique (1ère valeur > 0) dans une colonne "n" et en retourner ce qu'il y a pour la même ligne mais dans la 1ère colonne de mon df (date associée)?

  9. #9
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut
    Peut-être en faisant référence au champ Dates ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print(df$Dates[min(id_date_prof_pos)])

  10. #10
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Florence Magnin Voir le message
    En effet, je DOIS absolument me documenter. Mais j'avoue avoir du mal à trouver les bonnes références.
    Citation Envoyé par A. D. Voir le message
    je ne saurais que trop vous conseiller de commencer par lire certains tutoriels de base sur R, dont certains sont disponibles ici.
    C'est peut-être un bon début

    Sinon pour accéder à l'aide d'une fonction :


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Merci à vous deux.
    Je vais commencer à écrire sur ces bases.

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Je reviens sur l'idée de boucle puisque le but de ma fonction est de tester chaque colonne de mon data frame à partir de la seconde (X0.30) et jusqu'à la dernière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                       dates  X0.30   X0.5   X0.7   X0.9   X1.1   X1.4   X1.7
    1    2009-12-15 12:00:00  -7.33  -7.09  -7.00  -6.91  -6.82  -6.77  -6.74
    2    2009-12-15 15:00:00  -7.78  -7.40  -7.25  -7.13  -7.05  -7.01  -6.98
    3    2009-12-15 18:00:00  -8.00  -7.50  -7.28  -7.15  -7.09  -7.04  -6.97
    4    2009-12-15 21:00:00  -8.41  -7.66  -7.35  -7.18  -7.09  -7.04  -7.00
    5    2009-12-16 00:00:00  -8.85  -7.85  -7.44  -7.23  -7.12  -7.05  -7.01
    6    2009-12-16 03:00:00  -9.28  -8.09  -7.56  -7.28  -7.15  -7.08  -7.01
    7    2009-12-16 06:00:00  -9.69  -8.36  -7.70  -7.35  -7.18  -7.09  -7.04
    Le but du test est en français:

    si (la colonne "n" contient des valeurs >0), {tester la colonne suivante(incrémenter de +1?? je suppose, mais comment??)}

    sinon (aucune valeur positive trouvée dans la colonne)

    {arrêter le test,
    + écrire sur la console le nom de la dernière colonne testée (celle ayant que des températures négatives),
    + celle de l'avant-dernière colonne testée ( càd la dernière ayant des températures positives),
    + la date associée à cette dernière température positive trouvée
    }

    Mon problème est pour formuler:

    1) le champ d'application de mon test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    df <- dataframe
    for (i in 2:nrow(df))   # applique le test ligne par ligne?
    #ou 
    (i in 2: ncol(df))    # applique le test colonne par colonne?
    2) la condition du if:

    if (i >0) # mais ne s'applique pas à tous les éléments d'une ligne ou
    # d'une colonne

    Bref, je n'arrive pas à formuler mon test écrit en français en code.
    des traducteurs potentiels?
    merci d'avance.

  13. #13
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Re-bonjour,

    Votre problème me semble plus être un problème d'algorithmique que de R à proprement parlé.
    Voici quelques pistes qui pourraient peut-être vous aider :

    • Pourquoi ne pas utiliser un "while" plutôt qu'un "for", du genre : tant qu'on tombe sur une colonne avec des éléments positifs, continuer à tester la colonne suivante.
    • Sinon avec R, pour se passer des boucles il y a tout l'attirail des fonctions de type "apply" (voir les tutoriels à ce sujet), mais je pense que c'est peut-être quelque chose à voir dans un second temps. Si déjà vous parvenez à écrire une boucle qui correspond à votre problème, une grand partie du chemin sera fait. Ensuite, vous pourrez songer à optimiser votre code (bien que dans l'idéal, il serait préférable de passer dès le début par des fonctions de type "apply").
    • Pour ce qui est des autres étapes (récupérer le nom de la dernière colonne testée, la date associée à la température positive, etc...), vous devriez pouvoir arriver à les écrire avec l'aide d'un peu de docs si nécessaire (il s'agit principalement de manipulation de données ie. la base à connaître en R donc c'est un bon exercice que de vous y atteler).

    Enfin, je pense que la fonction "which" (déjà suggérée par habasque) peut être intéressante dans votre cas.

    Sur ce, bon courage et n'hésitez pas à revenir poster une fois que vous aurez écrit un peu plus de code !


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  14. #14
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Et bien voilà quelques codes avec les problèmes associés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    for (i in 2:ncol(df)) {
     
    # je cherche a créer un objet: "AL" qui regroupe toutes 
    # les valeurs positives de mon df:
    		AL <- which(df[i] > 0)
     
    # déjà là, la structure de "AL" semble bizarre 
    # str(AL)
    # int [1:662] 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 ...
    # alors que j'aimerais obtenir des valeurs de température, bref, 
     
    # Ensuite je veux obtenir la date de début 
    # de chaque apparition de valeur positive par colonne (profondeur)
     
    		print(paste("Start date : ",df[[1]][min(AL)]))
     
    # Je veux aussi le nom des colonnes associés à ces veleurs positives
    # mais là aussi ça ne fonctionne pas: donne "NULL".
    		print(colnames(AL[i]))
     
    #puis je cherche à créer un objet avec la première colonne ("ALmax") 
    #dont toutes les valeurs sont nulles et d'en obtenir le nom de colonne
    #mais comment écrire "1ère colonne où toutes les valeurs < 0??)
    	if (df[i]<0){ stop()
    		ALmax <- ??? 
    		print(paste("max AL: ",df[[i]]))
    			}
    		}
    Y-aurait-il donc un correcteur potentiel?
    En vous remerciant d'avance...

  15. #15
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Ne le prenez pas mal, mais à la vue de votre code, je pense que vous n'avez sûrement pas passé assez de temps à potasser la doc et les tuto sur R.

    En effet, dans votre code, l'indice i de votre boucle correspond aux numéros de colonnes. Ainsi, pour accéder à la ième colonne de df, il faut faire :

    Ensuite, je vous conseille de regarder l'aide de la fonction which :

    La structure de AL n'est pas "bizarre", la fonction which vous renvoie les numéros des éléments qui vérifient la condition demandée.
    Ainsi, pour récupérer les valeurs des températures positives pour la colonne i :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    val_pos<-which(df[,i]>0)
    temp_pos_i<-df[val_pos,i]
    Voilà, maintenant c'est à vous de faire le reste du travail, en prenant bien le temps de lire et manipuler à l'aide de tutoriel, l'aide des fonctions disponibles dans R, etc...
    Cependant, n'hésitez pas à revenir quand vous aurez avancé ! Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  16. #16
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Merci A.D.
    Et non bien sûr je ne le prends pas mal puisque vous avez tout à fait raison.
    En réalité, j'ai déjà passé du temps sur ces tutoriels, mais j'avoue parfois plus essayer de m'inspirer de bribes de codes qui me sont fournies par quelques collègues et qui m'en font perdre mon latin...
    Alors je vais suivre vos conseils: retour aux tutoriels!!
    Cordialement.

Discussions similaires

  1. [XL-2007] Extraire que certaines données d'un fichier csv
    Par Fouinette85 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 06/05/2009, 23h37
  2. Comment ne conserver que certains caratères ?
    Par pazgal dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2009, 00h45
  3. Besoin d'aide pour n'extraire que certaines données
    Par Jean-Marc68 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/02/2008, 17h53
  4. Réponses: 35
    Dernier message: 18/05/2006, 18h30
  5. Réponses: 1
    Dernier message: 06/02/2006, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo