"Aligner" valeur et supprimer ligne avec na

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

Vivien Leonard
Messages : 6
Enregistré le : 04 Avr 2018, 23:15

"Aligner" valeur et supprimer ligne avec na

Messagepar Vivien Leonard » 09 Avr 2018, 09:23

Bonjour,

j'ai deux dataframe dont voici les structures :
Dataframe 1 :

Code : Tout sélectionner

           year    x                  y                species                 
     [1,] "2014" "4001758.3924046"  "3138415.9463486"  "Sus scrofa"             
     [2,] "2016" "3990684.89200331" "3088575.79671371" "Capreolus capreolus"   
     [3,] "2014" "4002641.44272945" "3078682.12799716" "Capreolus capreolus"   
     [4,] "2014" "3946723.09681777" "3153792.59524072" "Capreolus capreolus"   
     [5,] "2014" "3975356.46700669" "2974349.6604129"  "Cervus elaphus"         
     [6,] "2014" "4001283.9265329"  "3137527.57584417" "Capreolus capreolus"   
     [7,] "2014" "3946723.09681777" "3153792.59524072" "Capreolus capreolus"   
     [8,] "2014" "3946723.09681777" "3153792.59524072" "Capreolus capreolus"   
     [9,] "2017" "4000195.01511827" "3103181.07855945" "Capreolus capreolus"


Dataframe 2 :

Code : Tout sélectionner

           var                                x                       y       year_vec     info                 
      [1,] "mean_ndvi"               "4878686.57157449" "5393968.15997648" "1992"   "0.386875003576279"   
      [2,] "mean_ndvi"               "4896433.83572102" "5398120.2484886"  "1992"   "0.373374998569489"   
      [3,] "mean_ndvi"               "4900572.93504345" "5370687.20427196" "1992"   "0.394125014543533"   
      [4,] "mean_ndvi"               "4902934.77310431" "5361773.82267221" "1992"   "0.271333336830139"   
      [5,] "mean_ndvi"               "4763325.11415408" "5286260.42907455" "1992"   "0.341958343982697"   
      [6,] "mean_ndvi"               "4659782.7218849"  "5251960.76092113" "1992"   "0.407333344221115"   
      [7,] "mean_ndvi"               "4672416.53746615" "5253639.4841048"  "1992"   "0.443416655063629"   
      [8,] "mean_ndvi"               "4688194.71187035" "5255824.40292703" "1992"   "0.334916681051254"   
      [9,] "mean_ndvi"               "4697653.82879809" "5257181.46577816" "1992"   "0.367166668176651" 


Je souhaiterai faire en sorte de ne conserver dans mon Dataframe 2 uniquement les points qui apparaissent également dans mon Dataframe 1 !

Mais je n'y parviens pas.
J'ai essayé d'utiliser intersect(),merge(), select et filter, mais rien à faire je n'y arrive pas.
Dans l'idée que j'ai, j'aimerais aligner les données, c'est à dire ne mettre que les infos correspondantes sur la même ligne (fusionner mes dataframes en un seul, en faisant en sorte que les coordonnées x et y soient les mêmes dans les cas où c'est possible).

Auriez vous des idées ? Je sèche ...

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

Re: "Aligner" valeur et supprimer ligne avec na

Messagepar Pierre-Yves Berrard » 09 Avr 2018, 09:41

Bonjour,

Vivien Leonard a écrit :j'ai deux dataframe dont voici les structures

Vu l'aperçu des données, ce ne sont pas des data.frame mais des des matrices.

Vivien Leonard a écrit :J'ai essayé d'utiliser intersect(),merge(), select et filter, mais rien à faire je n'y arrive pas.

Avez-vous tenté

Code : Tout sélectionner

merge(df1, df2, by = c("year", "x", "y"), all.x = TRUE)
?
PY

Vivien Leonard
Messages : 6
Enregistré le : 04 Avr 2018, 23:15

Re: "Aligner" valeur et supprimer ligne avec na

Messagepar Vivien Leonard » 09 Avr 2018, 09:47

Merci de votre réponse,
en effet, ce n'était pas des dataframes.
Je les ai convertit, et j'ai tenté ce que vous proposiez :

Code : Tout sélectionner

data_final<-merge(data_1992,ungu_tmp,by=c("year","x","y"),all.x=TRUE)


Voilà l'erreur que j'obtiens :

Code : Tout sélectionner

Error in fix.by(by.x, x) :
  'by' doit spécifier une colonne unique correcte


NB : j'ai totalement oublié de préciser une chose qui peut être importante : mes deux dataframes n'ont pas le même nombre de ligne !

NB2 : ce que j'obtient après avoir regarder plus en profondeur : il me créer un dataframe avec simplement les x et y fusionné, mais sans aucun filtre, c'est à dire qu'il conserve tout les données

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

Re: "Aligner" valeur et supprimer ligne avec na

Messagepar Pierre-Yves Berrard » 09 Avr 2018, 10:43

Je n'avais pas vu que dans le 2e df, l'année s'appelle "year_vec" et pas "year". Renommer au préalable ou utiliser les argument by.x et by.y de la fonction merge.
PY

Vivien Leonard
Messages : 6
Enregistré le : 04 Avr 2018, 23:15

Re: "Aligner" valeur et supprimer ligne avec na

Messagepar Vivien Leonard » 09 Avr 2018, 10:48

C'est ce que j'ai fait, je me suis dit que l'erreur venait de là.
Voici ce que j'obtient :

Code : Tout sélectionner

year   x   y   species   var   info   
1   1886   3986930.84281944   3242796.8523834   Dama dama   NA   NA
2   1886   3998628.78500413   3242939.28683812   Dama dama   NA   NA
3   1890   3988048.63598848   3248048.47826575   Capreolus capreolus   NA   NA
4   1891   3996925.52024828   3242064.27597537   Dama dama   NA   NA
5   1892   3989390.61291645   3249183.83800576   Capreolus capreolus   NA   NA
6   1892   3998773.38638032   3242812.55242677   Dama dama   NA   NA
7   1893   3992236.72819191   3239812.75926375   Capreolus capreolus   NA   NA
8   1895   3985617.2078597   3243718.8180321   Capreolus capreolus   NA   NA


Plusieurs problème ici :
1), l'année n'a pas été conservé, dans mon premier dataframe, je ne m'occupe que de l'année 1992, alors qu'ici j'obtiens des ifnormations de toutes les années j'ai l'impression.
2) les colonnes var et infos, comme vous pouvez le voir, ne contiennent que des NA, alors que cela ne devrait pas être le cas, elle devrait contenir des informations.

Une idée de pourquoi cela fait ça ? Je teste pas mal de chose depuis tout à l'heure mais je ne parviens pas à obtenir un résultat cohérent avec ce que je souhaite faire.


Retourner vers « Questions en cours »

Qui est en ligne

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