Le tri et la fusion sont deux concepts importants dans la gestion des données. L'objet peut être un seul vecteur ou peut être un cadre de données ou une matrice. Pour trier un vecteur dans R, la commande sort () est utilisée. Une option de commande décroissante peut être utilisée pour changer l'ordre en ordre croissant ou décroissant. Pour une trame de données telle que ArtPiece.csv, la commande order est utilisée pour trier les données, où l'ordre croissant ou décroissant peut être défini pour plusieurs variables. L'ordre décroissant peut être exécuté en plaçant un signe négatif devant un nom de variable. Utilisons l'ensemble de données pour expliquer le concept de tri dans R comme indiqué dans le script suivant:

  1. > # Sorting and Merging Data
  2. > ArtPiece<-read.csv("ArtPiece.csv")
  3. > names(ArtPiece)
  4. [1] "Cid" "Critic.Ratings"
  5. "Acq.Cost"
  6. [4] "Art.Category" "Art.Piece.Size"
  7. "Border.of.art.piece"
  8. [7] "Art.Type" "Prominent.Color"
  9. "CurrentAuctionAveragePrice"
  10. [10] "Brush" "Brush.Size"
  11. "Brush.Finesse"
  12. [13] "Art.Nationality" "Top.3.artists"
  13. "CollectorsAverageprice"
  14. [16] "Min.Guarantee.Cost"
  15. > attach(ArtPiece))
Source code

Dans l'ensemble de données ArtPiece, il existe 16 variables: 10 variables numériques et 6 variables catégorielles. En utilisant la commande names, tous les noms des variables de l'ensemble de données peuvent être imprimés. La fonction attach permet de conserver tous les noms de variables dans la session en cours de R, de sorte que chaque fois que l'utilisateur n'aura pas à taper le nom du dataset avant le nom de la variable dans le code:

  1. > sort(Critic.Ratings)
  2. [1] 4.9921 5.0227 5.2106 5.2774 5.4586 5.5711 5.6300 5.7723 5.9789
  3. 5.9858 6.5078 6.5328
  4. [13] 6.5393 6.5403 6.5617 6.5663 6.5805 6.5925 6.6536 6.8990 6.9367
  5. 7.1254 7.2132 7.2191
  6. [25] 7.3291 7.3807 7.4722 7.5156 7.5419 7.6173 7.6304 7.6586 7.7694
  7. 7.8241 7.8434 7.9315
  8. [37] 7.9576 8.0064 8.0080 8.0736 8.0949 8.1054 8.2944 8.4498 8.4872
  9. 8.6889 8.8958 8.9046
  10. [49] 9.3593 9.8130
Source code

Par défaut, le tri est effectué par ordre croissant. Pour trier le vecteur par ordre décroissant, il est nécessaire de mettre un négatif avant le nom de la variable. La variable Critic.Ratings peut également être triée par ordre décroissant, comme illustré ci-dessous. Pour trier dans l'ordre décroissant, décroissant est vrai et peut être défini dans la commande:

  1. > sort(Critic.Ratings, decreasing = T)
  2. [1] 9.8130 9.3593 8.9046 8.8958 8.6889 8.4872 8.4498 8.2944 8.1054
  3. 8.0949 8.0736 8.0080
  4. [13] 8.0064 7.9576 7.9315 7.8434 7.8241 7.7694 7.6586 7.6304 7.6173
  5. 7.5419 7.5156 7.4722
  6. [25] 7.3807 7.3291 7.2191 7.2132 7.1254 6.9367 6.8990 6.6536 6.5925
  7. 6.5805 6.5663 6.5617
  8. [37] 6.5403 6.5393 6.5328 6.5078 5.9858 5.9789 5.7723 5.6300 5.5711
  9. 5.4586 5.2774 5.2106
  10. [49] 5.0227 4.9921
Source code

début de l'ensemble de données en tant que NA.LAST est FALSE. En gardant les NA séparés de la fonction de commande, le bon fonctionnement des données peut être maintenu.

 

La fonction de fusion aide à combiner deux trames de données. Pour combiner deux trames de données, au moins un nom de colonne doit être identique. Les deux trames de données peuvent également être jointes en utilisant une fonction appelée Colonne de liaison. Pour afficher la différence entre les fonctions de liaison et de fusion de colonnes, nous avons utilisé le jeu de données audit.CSV. Deux petits ensembles de données, A et B, ont été préparés à partir de l'ensemble de données d'audit:

  1. > i2<-ArtPiece[order(Critic.Ratings,Acq.Cost),1:5]
  2. > head(i2)
  3. Cid Critic.Ratings Acq.Cost Art.Category Art.Piece.Size
  4. 9 9 4.9921 39200 Vintage I 26in. X 18in.
  5. 50 50 5.0227 52500 Portrait Art I 26in. X 24in.
  6. 26 26 5.2106 31500 Dark Art II 1in. X 7in.
  7. 45 45 5.2774 79345 Gothic II 9in. X 29in.
  8. 21 21 5.4586 33600 Abstract Art Type II 29in. X 29in.
  9. 38 38 5.5711 35700 Abstract Art Type III 9in. X 12in.
Source code

Deux colonnes, ID et Employment, sont communes aux deux ensembles de données A et B, qui peuvent être utilisés comme clé primaire pour fusionner deux trames de données. À l'aide de la commande de fusion, les colonnes communes sont prises une fois dans le jeu de données de résultat à partir de la fonction de fusion. Le bloc de données fusionné contient toutes les lignes ayant des entrées complètes dans les deux blocs de données:

  1. > i2<-ArtPiece[order(Border.of.art.piece, na.last = F),2:6]
  2. > head(i2)
  3. Critic.Ratings Acq.Cost Art.Category Art.Piece.Size
  4. Border.of.art.piece
  5. 18 7.5156 34300 Vintage III 29in. X 6in.
  6. 43 6.8990 59500 Abstract Art Type II 23in. X 21in.
  7. 1 8.9046 49700 Abstract Art Type I 17in. X 27in.
  8. Border 1
  9. 12 7.5419 37100 Silhoutte III 28in. X 9in.
  10. Border 10
  11. 14 7.1254 54600 Vintage II 9in. X 12in.
  12. Border 11
  13. 16 7.2132 23100 Dark Art I 10in. X 22in.
  14. Border 11
Source code

La fonction de fusion permet quatre manières différentes de combiner des données: la jointure naturelle, la jointure externe complète, la jointure externe gauche et la jointure externe droite. En dehors de ces jointures, deux trames de données peuvent également être fusionnées en utilisant une ou plusieurs colonnes spécifiques. La jointure naturelle aide à conserver uniquement les lignes qui correspondent aux trames de données, qui peuvent être spécifiées par l'argument all = F:

  1. > head(merge(A,B, all=F),3)
  2. ID Employment Age Income Deductions Education Marital
  3. Occupation
  4. 1 1044221 Private 60 7568.23 0 College Married
  5. Executive
  6. 2 1047095 Private 74 33144.40 0 HSgrad Married
  7. Service
  8. 3 1047698 Private 43 43391.17 0 Bachelor Married
  9. Executive
Source code

La jointure externe complète nous permet de conserver toutes les lignes des deux trames de données, ce qui peut être spécifié par la commande all = T. Cela effectue la fusion complète et remplit les colonnes avec des valeurs NA où il n'y a pas de données correspondantes dans les deux cadres de données. Le paramètre par défaut de la fonction de fusion supprime tous les cas non concordants des deux cadres de données; pour conserver tous les cas dans une nouvelle trame de données, nous devons spécifier all = T:
  1. > head(merge(A,B, all=T),3)
  2. ID Employment Age Income Deductions Education Marital
  3. Occupation
  4. 1 1004641 Private 38 81838.0 0 <NA> <NA>
  5. <NA>
  6. 2 1010229 Private 35 72099.0 0 <NA> <NA>
  7. <NA>
  8. 3 1024587 Private 32 154676.7 0 <NA> <NA>
  9. <NA>
Source code

La jointure externe gauche nous permet d'inclure toutes les lignes de la trame de données une (A) et seulement celles de la trame de données deux (B) qui correspondent; Pour ce faire, nous devons spécifier all.x = T:
  1. > head(merge(A,B, all.x = T),3)
  2. ID Employment Age Income Deductions Education Marital
  3. Occupation
  4. 1 1004641 Private 38 81838.0 0 <NA> <NA>
  5. <NA>
  6. 2 1010229 Private 35 72099.0 0 <NA> <NA>
  7. <NA>
  8. 3 1024587 Private 32 154676.7 0 <NA> <NA>
  9. <NA>
Source code

La jointure externe droite nous permet d'inclure toutes les lignes de la trame de données B et seulement celles de A qui correspondent; spécifiez all.y = T:
  1. > head(merge(A,B, all.y = T),3)
  2. ID Employment Age Income Deductions Education Marital
  3. Occupation
  4. 1 1044221 Private 60 7568.23 0 College Married
  5. Executive
  6. 2 1047095 Private 74 33144.40 0 HSgrad Married
  7. Service
  8. 3 1047698 Private 43 43391.17 0 Bachelor Married
  9. Executive
Source code

Dans les blocs de données A et B, deux colonnes sont communes; ils sont ID et Emploi. En utilisant la commande merge, si nous sélectionnons par une variable commune, l'autre variable commune apparaîtra sur la trame de données de résultat. Si nous sélectionnons plusieurs trames de données comme critères à fusionner, toutes les colonnes dupliquées du cadre de données résultant disparaîtront:

  1. > head(merge(A,B,by="ID"),3)
  2. ID Age Employment.x Income Deductions Employment.y Education
  3. Marital Occupation
  4. 1 1044221 60 Private 7568.23 0 Private College
  5. Married Executive
  6. 2 1047095 74 Private 33144.40 0 Private HSgrad
  7. Married Service
  8. 3 1047698 43 Private 43391.17 0 Private Bachelor
  9. Married Executive
  10. > head(merge(A,B,by=c("ID","Employment")),3)
  11. ID Employment Age Income Deductions Education Marital
  12. Occupation
  13. 1 1044221 Private 60 7568.23 0 College Married
  14. Executive
  15. 2 1047095 Private 74 33144.40 0 HSgrad Married
  16. Service
  17. 3 1047698 Private 43 43391.17 0 Bachelor Married
  18. Executive
Source code

La fonction de fusion fonctionne lorsque deux trames de données contiennent au moins une colonne commune, si les trames de données contiennent des colonnes disjointes ou s'il n'y a pas de colonne commune entre les deux trames de données, les deux trames de données peuvent être combinées. La fonction de liaison de colonnes imprime toutes les colonnes de la trame de données A et de la trame de données B et les met côte à côte:

  1. > A<-audit[,c(2,7,9)]
  2. > names(A)
  3. [1] "Age" "Income" "Deductions"
  4. > B<-audit[,c(4,5,6)]
  5. > names(B)
  6. [1] "Education" "Marital" "Occupation"
  7. > head(cbind(A,B),3)
  8. Age Income Deductions Education Marital Occupation
  9. 1 38 81838.0 0 College Unmarried Service
  10. 2 35 72099.0 0 Associate Absent Transport
  11. 3 32 154676.7 0 HSgrad Divorced Clerical
Source code