10 choses que vous pouvez faire dans r que vous aurais fait dans Microsoft Excel

La feuille de calcul est probablement l'une des applications les PC les plus utilisés - et pour une bonne raison: Tableur il est très facile d'effectuer des calculs et autres opérations sur les données tabulaires. Mais tableurs posent certains risques ainsi: Ils sont faciles à corrompre et très difficile à déboguer. Les bonnes nouvelles sont, vous pouvez utiliser R de faire beaucoup des mêmes choses que vous faisiez dans des tableurs.

Sommaire

Ajout de rangée et de colonne des totaux

Une tâche que vous pouvez souvent faire dans une feuille de calcul calcule ligne ou de colonne totaux. La meilleure façon de le faire est d'utiliser les fonctions (rowSums) et colSums (). De même, utiliser (rowMeans) et colMeans () pour calculer moyens.

Essayez-le sur l'ensemble de données intégré iris. D'abord, enlever la cinquième colonne, car il contient le texte qui décrit les espèces d'iris:

> Iris.num lt; - IRIS [, -5]

Puis calculer la somme et la moyenne pour chaque colonne:

> ColSums (iris.num)> colMeans (iris.num)

Ces deux fonctions sont très pratiques, mais vous voudrez peut-être une autre statistique de calculer pour chaque colonne ou ligne. Il ya un moyen facile de traverser des lignes ou des colonnes d'un tableau ou un cadre de données: la apply () fonction. Par exemple, obtenir le minimum d'une colonne est la même que l'application d'une min () fonctionner à la deuxième dimension de vos données:

> Appliquer (iris.num, 2, min)> applique (iris.num, 2, max)

Numéros de formatage

Tu peux utiliser format () pour transformer vos nombres dans jolie texte, prêt pour l'impression. Cette fonction prend un certain nombre d'arguments pour contrôler le format de votre résultat. Voici quelques-unes:

  • tailler: Une valeur logique. Si FAUX, il ajoute des espaces à droite; justifier le résultat. Si VRAI, il supprime les espaces de début.

  • chiffres: Combien de chiffres significatifs de valeurs numériques pour afficher.

  • nPetite: Le nombre minimal de chiffres après la virgule.

En outre, vous contrôlez le format du point décimal avec decimal.mark, la marque entre les intervalles avant la virgule avec big.mark, et la marque entre les intervalles après la virgule avec small.mark.

Par exemple, vous pouvez imprimer le nombre 12,345,6789 avec une virgule comme séparateur décimal, espaces comme la grande marque, et les points que la petite marque:

> Format (12345.6789, chiffres = 9, decimal.mark = “, ”, + big.mark = “ # 147 ;, small.mark = “. ” ;, small.interval = 3) [1] “ 12 345,678.9 ”

A titre d'exemple plus pratique, pour calculer les moyens de certaines colonnes de mtcars puis imprimer les résultats avec deux chiffres après la virgule, utilisez la commande suivante:

> X lt; - colMeans (mtcars [1: 4])> Format (x, chiffres = 2, nPetite = 2) mpg cyl disphp “ 20.09 ” “ 6.19 ” “ 230,72 ” “ 146,69 ”

Notez que le résultat est plus un numéro, mais une chaîne de texte. Alors, soyez prudent lorsque vous utilisez le formatage des nombres - ce devrait être la dernière étape de votre flux de production de rapports.

Si vous êtes familier avec la programmation en langues similaires à C ou C ++, alors vous pouvez également trouver le sprintf () fonction utile. Ce gestionnaire vous permet de coller votre numéro formatée directement dans une chaîne.

Voici un exemple de convertir des nombres en pourcentages:

> X lt; - seq (0,5, 0,55, 0,01)> sprintf (. “% 1f %% ” ;, 100 * x) [1] “ 50,0% ” “ 51,0% ” “ 52,0% ” “ 53,0% ” “ 54,0% ” “ 55,0% ”

Ceci est ce qu'il fait: Le premier argument de sprintf () indique le format - dans ce cas, % .1f %%. L'argument de format utilise littéraux spéciaux qui indiquent que la fonction doit remplacer ce littérale avec une variable et d'appliquer une mise en forme. Les littéraux commencent toujours avec le % symbole. Donc, dans ce cas, % .1f des moyens pour formater la première valeur fournie comme une valeur de point fixe avec un chiffre après la virgule, et %% est un littéral que des moyens d'impression d'un %.

Pour formater certains numéros comme monnaie - dans ce cas, en dollars américains - utilisation:

> Set.seed (1)> x lt; - 1000 * runif (5)> sprintf (“ $% ” ;, 3.2f x) [1] “ 265,51 $ ” “ 372,12 $ ” “ 572,85 $ ” “ 908,21 $ ” “ 201,68 $ ”



La sprintf () fonction vous donne une autre façon de coller la valeur d'une variable dans une chaîne:

> Trucs lt; - c (“ ” ;, pain “ biscuits ”)> Prix lt; - c (2.1, 4)> sprintf (“ le coût $% s 3.2f% # 147 ;, choses, prix) [1] “ le pain coûte 2,10 $ “ “ biscuits coûtent $ 4,00 “

Ce qui se passe ici est que, parce que vous avez fourni deux vecteurs (chacune avec deux éléments) pour sprintf (), votre résultat est un vecteur à deux éléments. R cycles à travers les éléments et les place dans la sprintf () littéraux.

Vous pouvez tout faire avec coller () et format () que vous pouvez faire avec sprintf (), afin de ne pas jamais vraiment besoin de l'utiliser. Mais quand vous le faites, cela peut simplifier votre code.

Tri des données

Pour trier les données dans R, vous utilisez le Trier() ou commande() fonctions.

Pour trier la trame de données mtcars en augmentant ou en diminuant l'ordre de la colonne hp, utiliser:

> With (mtcars, mtcars [commande (HP),])> (avec mtcars, mtcars [Ordre (hp, diminuant = TRUE),])

Faire des choix avec des si

Tableur vous donnent la possibilité d'effectuer toutes sortes de “ si ”?; analyses. Une façon de le faire est d'utiliser la if () fonction dans une feuille de calcul.

R a également la if () fonction, mais il est surtout utilisé pour le contrôle de flux dans vos scripts. Parce que vous voulez généralement d'effectuer un calcul sur un vecteur entier dans R, il est généralement plus approprié d'utiliser le sinon() fonction.

Voici un exemple d'utilisation sinon() d'identifier les voitures avec un rendement énergétique élevé dans l'ensemble de données mtcars:

> Mtcars lt; - transformer (mtcars, + mpgClass = ifelse (mpg lt; moyenne (mpg), “ ” ;, Low “ haut ”))> mtcars [mtcars $ mpgClass == “ ” ;, haut]

Calculer les totaux conditionnelles

Quelque chose d'autre que vous avez probablement fait beaucoup dans Excel calcule sommes conditionnelles et compte avec les fonctions sumif () et countif ().

Vous pouvez faire la même chose dans l'une des deux manières dans R:

  • Usage ifelse.

  • Il suffit de calculer la mesure de l'intérêt sur un sous-ensemble de vos données.

Dites que vous voulez calculer une moyenne conditionnelle de l'efficacité énergétique dans mtcars. Vous faites cela avec le signifier() fonction. Maintenant, pour obtenir la consommation de carburant pour les voitures de chaque côté d'un seuil de 150 chevaux, essayez ce qui suit:

> (Avec mtcars, moyenne (MPG)) [1]> 20.09062 (avec mtcars, moyenne (mpg [ch lt; 150])) [1] 24,22353> (avec mtcars, moyenne (mpg [ch> = 150])) [1] 15,40667

Compter le nombre d'éléments dans un vecteur est le même que poser des questions sur sa longueur. Cela signifie que la fonction Excel countif () R a un équivalent en length ():

> With (mtcars, longueur (mpg [hp> 150])) [1] 13

Transposer colonnes ou lignes

Parfois vous avez besoin de transposer vos données à partir des lignes de colonnes, ou vice versa. En R, la fonction de transposer une matrice est t ():

> X lt; - matrice (01:12, ncol = 3)> x [1] [2] [3] [1], 1 5 9 [2], 2 6 10 [3], 3 7 11 [4 ,] 4 8 12

Pour obtenir la transposition d'une matrice, l'utilisation t ():

> T (x) [1] [2] [3] [4] [1,] 1 2 3 4 [2], 5 6 7 8 [3], 10 11 12 9

Vous pouvez également utiliser t () à transposer des trames de données, mais être prudent lorsque vous faites cela. Le résultat d'une transposition est toujours une matrice (ou un tableau). Car les tableaux ont toujours un seul type de variable, comme numérique ou le caractère, les types de variables de vos résultats peuvent ne pas être ce que vous attendez.

Trouver des valeurs uniques ou doubles

Pour identifier toutes les valeurs uniques de vos données, utilisez le Unique () fonction. Essayez de trouver les valeurs uniques du nombre de cylindres en mtcars:

> Uniques (mtcars $ cyl) [1] 6 4 8

Parfois, vous voulez savoir quelles valeurs de vos données sont des doublons. Selon votre situation, les doublons seront valables, mais parfois des entrées en double peuvent indiquer des problèmes de saisie de données.

La fonction d'identifier les doublons est dupliqué (). Dans l'ensemble de données intégré iris, il ya une rangée dupliqué dans la ligne 143. Essayez vous-même:

> Dupes lt; - doubles (iris)> Head (dupes) [1] false false false false false false> qui dupes () [1] 143> iris [dupes,] Sepal.Length Sepal.Width Petal.Length Petal.Width Species143 5.8 2,7 5,1 1,9 virginica

Étant donné que le résultat de dupliqué () est un vecteur logique, vous pouvez l'utiliser comme un indice pour supprimer des lignes à partir de vos données. Pour ce faire, utilisez l'opérateur de négation - le point d'exclamation (comme dans !dupes):

> Iris [!]> Dupes, nrow (iris [! Dupes,]) [1] 149

Travailler avec des tables de consultation

Dans un tableur comme Excel, vous pouvez créer des tables de consultation avec les fonctions vlookup ou une combinaison de index et rencontre.

Dans R, il peut être commode d'utiliser merge () ou rencontre(). La rencontre() fonction retourne un vecteur avec les positions des éléments qui répondent à votre valeur de recherche.

Par exemple, pour trouver l'emplacement de l'élément Toyota Corolla dans les noms des lignes de mtcars, essayez ce qui suit:

> Index lt; - Match (“ Toyota Corolla ” ;, rownames (mtcars))> index [1] 20> mtcars [index, 1: 4] mpg cyl disp hpToyota Corolla 33,9 71,1 4 65

Travailler avec des tableaux croisés dynamiques

Pour les tables simples dans R, vous pouvez utiliser la tapply () fonction pour obtenir des résultats semblables à des tableaux croisés dynamiques dans Excel. Voici un exemple d'utilisation tapply () pour calculer moyenne hp pour les voitures avec des nombres différents de cylindres et engrenages:

> (Avec mtcars, tapply (CV, liste (cyl, engins), signifie)) 3 4 54 76,0 97,0000 107,5000 102,06 175,08 116,5 299,5 194,1667 NA

Pour les tables un peu plus complexes - qui est, tables avec plus de deux facteurs classification croisée - utilisez le agrégat () fonction:

> Global (ch ~ cyl + vitesse + h, mtcars, signifient) engins de cyl amhp1 4 3 0 97,000002 6 3 0 107,500003 8 3 0 194,166674 4 4 0 78,500005 6 4 0 123,000006 4 4 1 75,166677 6 4 1 110,000008 4 5 1 102,000009 6 5 1 5 1 8 175,0000010 299,50000

En utilisant l'objectif et solveur

Dans R, la optimiser () fonction fournit un mécanisme assez simple pour les fonctions optimisation.

Imaginez que vous êtes le directeur d'une société de vente et vous devez définir le meilleur prix pour votre produit. En d'autres termes, trouver le prix d'un produit qui maximise les revenus.

En économie, un modèle simple d'états de prix que les gens achètent moins d'un produit donné lorsque le prix augmente. Voici une fonction très simple qui a ce comportement:

> Les ventes lt; - fonction (prix) {100 - 0.5 * price}

Des recettes attendues est alors simplement le produit de prix et les ventes attendues:

> Recettes lt; - fonction (prix) {* prix de vente (prix)}

Vous pouvez utiliser le courbe () fonction pour tracer des fonctions continues. Cela prend une fonction comme entrée et produit un complot. Essayez de tracer le comportement des ventes et des revenus en utilisant le courbe () fonction, le prix de 50 $ à 150 $ variable:

> Oldpar lt; - PAR (mfrow = c (1, 2), bty = “ l ”)> courbe (ventes, de = 50, à = 150, xname = “ ” ;, prix principal = “ Sales ”)> courbe (revenus, à partir = 50, à = 150, xname = “ ” ;, prix principal = “ Revenu ”)> par (oldpar)

Vos résultats devraient ressembler à ceci.

Un modèle des ventes et des recettes escomptées.
Un modèle des ventes et des recettes escomptées.

Vous avez un modèle de travail du chiffre d'affaires. Vous pouvez immédiatement voir qu'il ya un point de maximum de revenus. Ensuite, utilisez la fonction R optimiser () pour trouver la valeur de ce maximum. Utiliser optimiser (), vous devez dire ce qui fonctionne à utiliser (dans ce cas, revenus ()), Ainsi que l'intervalle (dans ce cas, les prix entre 50 et 150). Par défaut, optimiser () Recherches pour une valeur minimale, alors dans ce cas, vous devez lui dire de rechercher la valeur maximale:

> Optimiser (revenus, c = intervalle (50, 150), Maximum = TRUE) $ maximum [1] de 100 $ l'objectif [1] 5000

Et là vous allez. Facturer un prix de 100 $, et espérer obtenir 5000 $ en revenus.


» » » » 10 choses que vous pouvez faire dans r que vous aurais fait dans Microsoft Excel