Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1524 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  valeurs plus grande que

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

valeurs plus grande que

n°2277485
cmyriam
Posté le 11-03-2016 à 16:31:21  profilanswer
 

Bonjour,
 
J'ai ecrit un script que voila:
 

Code :
  1. #!/bin/bash
  2. cat values_EU_2L_1.csv | while IFS=',' read t r m
  3. do
  4. ./ms 12 100 -t ${t} -eN 0.022 0.72 -eN 0.15 0.06 -eN 0.18 0.59 -r ${r} 1000 | ./sample_stats | cut -f 4 | > Outputemp_S_A_EU.csv
  5. cat Outputemp_S_A_EU.csv | if $m > Outputemp_S_A_EU.csv
  6. echo "nombre de valeurs" >> Output_S_A_EU.csv
  7. rm Outputemp_S_A_EU.csv
  8. done


 
Ce script lit le fichier values_EU_2L_1.csv qui ressemble a ca:
colonne1  colonne2   colonne 3
valeurs t   valeurs r   valeurs m
10              200          2  
15              150          3
.....         .....           .....
 
Ensuite, j'utilise le programme ms pour calculer des statistiques et j'obtiens le fichier Outputemp_S_A_EU.csv qui ressemble a ca:
 
colonne
2
5
6
......
 
Le probleme que j'ai se situe apres, je voudrais savoir le nombre de valeurs superieur a  la valeur m qui se trouve dans la 3em colonne de mon fichier "values_EU_2L_1.csv"
Par example, pour la 1er ligne, j'ai ma liste de valeurs calculees pour les parametres 10 et 100 et je voudrais savoir combien de valeurs dans cette liste (donc dans le fichier temporaire) sont superieur a 2.
A la fin je voudrais un fichier avec pour chaque ligne de parametres du fichier "values_EU_2L_1.csv", le nombre de valeurs superieur au m correspondant a la meme ligne.
 
je pense que cette partie du script est fausse,
 

Code :
  1. cat Outputemp_S_A_EU.csv | if $m > Outputemp_S_A_EU.csv
  2. echo "nombre de valeurs" >> Output_S_A_EU.csv


 
Pourriez-vous m'aider avec le script?
Merci.
 
J'espere avoir ete assez claire.
 
Myriam


Message édité par cmyriam le 16-03-2016 à 14:06:27
mood
Publicité
Posté le 11-03-2016 à 16:31:21  profilanswer
 

n°2277709
cmyriam
Posté le 15-03-2016 à 17:22:11  profilanswer
 

Bonjour,  
 
J'ai essaye de resoudre mon probleme et j'ai cree 2 scripts: 1 en bash et l'autre avec R.
 
Cependant les 2 ne fonctionnnent toujours pas:
 
Voila le premier en R:
 

Code :
  1. #!/usr/bin/Rscript
  2. data_csv <- read.table("data.csv",sep=",",header=F) # data.csv = values_EU_2L_1.csv
  3. counter_values<-c()
  4. for(i in 1:dim(data_csv)[1])
  5. {
  6.    counter <-0
  7.    system(paste("./ms 12 100 -t ",data_csv[i,1]," -eN 0.022 0.72 -eN 0.15 0.06 -eN 0.18 0.59 -r ",data_csv[i,2]," 1000 | ./sample_stats | cut -f 4 > Output_temp.csv",sep="" ))
  8.    data_temp <- read.table("Output_temp.csv",sep=",",header=F)
  9.    for(j in 1: dim(data_temp)[1])
  10.    {
  11.      if(data_csv[i,3]>data_temp[j,1])
  12.        counter <- counter+1
  13.    }
  14.   counter_values <- c(counter_values,counter)
  15.   system("rm Output_temp.csv" )
  16. }
  17. write.table(counter_values,"counter_file.txt" )


 
Le probleme est que lorsque je veux le lancer avec qsub, j'ai le message d'erreur:
Syntax error: “(” unexpected
 
Je n'arrive pas a trouver quel est l'erreur dans mon script.
 
 
Quand au script en bash, le voila:

Code :
  1. #!/bin/bash
  2. file="counter_file.txt"
  3. cat data.csv | while IFS=',' read t r m
  4. do
  5. ./ms 12 100 -t ${t} -eN 0.022 0.72 -eN 0.15 0.06 -eN 0.18 0.59 -r ${r} 1000 | ./sample_stats | cut -f 4 > Output_temp.csv
  6. counter=0
  7. cat Output_temp.csv | while read temp
  8. do
  9. if [ "${m}" \> "${temp}" ]; then
  10.   counter=$((counter+1));
  11. fi
  12. done
  13. echo " $counter"
  14. rm Output_temp.csv
  15. done


 
La encore, le fichier a la fin ne me donne que 0 et non les valeurs que je veux.
Si quelqu'un pouvait m'aider, ca serait vraiment super.
 
Merci d'avance,
Myriam


Message édité par cmyriam le 15-03-2016 à 17:23:24
n°2278545
Profil sup​primé
Posté le 29-03-2016 à 06:31:27  answer
 

salut,
 
je ne vais pas pouvoir t'aider pour le script en R. :(
 
pour le script bash, deux choses (au moins) :
1- un pipe crée un sous-interpréteur.
tout comme un script, les variables qui y sont assignées n'existent pas dans l'environnement parent.
un fichier se lit, en shell, sans cat, en redirigeant le contenu du fichier vers la commande read, ainsi :

Code :
  1. while read line; do echo "$line"; done < fichier


2- il existe des opérateurs arithmétiques pour les tests (voir : help test); > est un opérateur de comparaison pour les textes.
 
les fichiers temporaires sont à éviter : ils ralentissent énormément les scripts.
combien de lignes comporte Output_temp.csv ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  valeurs plus grande que

 

Sujets relatifs
Compter le nombre de valeurs différentessed : remplacer valeurs batch sur 2 gigas de données
Excel (liste avec des valeurs identiques/graph)Récupérer valeurs
Récupérer des valeurs fusionnéesMettre en pied de page les valeurs de deux cellules différentes ?
Generer des valeurs aleatoires differentes en utilisant Binomial DistrTkinter-Problème pour récupérer les valeurs
Plusieurs valeurs possible dans une variable/parametre 
Plus de sujets relatifs à : valeurs plus grande que


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR