Voici quelques traitements très simples que je voudrais effectuer en utilisant R, mais je trouve des difficultés. Mes données en entrées (fichiers .csv ou xml) sont produits par un logiciel de simulation :
Soit le fichier nb_steps.csv suivant
1544 1999 1999 1115 1633
Le nombre de valeurs est égal à une variable nbRuns (le nombre de simulations effectuées).
La valeur max que peuvent prendre ces valeurs dans cet exemple est nbSteps-1, le nombre maximum de pas d’une simulation (ici nbSteps = 2000).
Les valeurs inférieures à 1999 dans mon exemple sont dites convergentes.
Je cherche à faire des stats simples sur le contenu de ce fichier :
• Le pourcentage d’exécution ayant convergées : D’abord connaître le pourcentage des valeurs convergentes (strictement inférieures à nbSpets-1) :
Càd traitement :
Code : Tout sélectionner
Conv()
{
nbConv 0
Parcourir le fichier <nb_steps.csv> // exemple de nb_steps.csv plus haut
Si « valeur courante » est_inférieure à « nbSteps-1 » alors
nbConv <- nbConv + 1
jusqu’à Eof (end of file)
conv <- (nbConv/nbRuns)* 100
}
Ce qui donnera pour mon exemple 3/5 = 60 %
Mais au lieu de réécrire cette fonction (bien que le calcul soit très simple), il doit y avoir une fonction sous R qui le fait ?
• Stat sur nombre de pas pour converger : (min | médiane | max || moyenne | écart type) :
Là je ne veux prendre en compte que les valeurs < 1999, et extraire leur min, méd, max, moy et écart-type de ces valeurs :
- >> min = 1115, med (médiane) = 1544 et max = 1633
- >> moy (moyenne arithmétique) = 1430.67
- >> variance = sigma(xi2/n)- moy2 =
- >> écart-type (ET) = racine(variance)
Ce qui est donné en majorité par la fonction summary(), mais celle-ci considère les valeurs des différentes colonnes comme autant de variables différentes alors que mon fichier est un vecteur ligne d’une seule variable.
> mySteps <- read.csv("nb_steps.csv", header =FALSE, sep = "", dec=".")
> mySteps
V1 V2 V3 V4 V5
1 1544 1999 1999 1115 1633
>
En ordonnant (manuellement) les valeurs sur la même colonne les valeurs ne sont pas lues correctement :
> mySteps2 <- read.csv("nb_steps2.csv", header =FALSE, sep = "\n", dec=".")
> mySteps2
V1
1 ÿþ1
2 \n1115
3 \n1633
4 \n
5 \n
>
Une idée sur la façon de procéder pour avoir des calculs corrects ?
Merci