bahamut_zero Δημοσ. 8 Οκτωβρίου 2018 Δημοσ. 8 Οκτωβρίου 2018 καλησπερα, ειναι εντελως ακυρος ο τιτλος που εβαλα αλλα δεν μπορουσα να σκεφτω κατι καλυτερο συγνωμη. Ψαχνω την λογικη κι οχι τον κωδικα για ενα προβλημα μου. Εχω εναν πινακα που εχει διαφορους ποδοσφαιρικους αγωνες, ειναι της μορφης: HomeTeam AwayTeam FTHG FTAG 1 Burnley Swansea 0 1 2 Crystal Palace West Brom 0 1 3 Everton Tottenham 1 1 4 Hull Leicester 2 1 5 Man City Sunderland 2 1 6 Middlesbrough Stoke 1 1 και θελω να δημιουγησω εναν αλλο πινακα που να εχει την συχνοτητα εμφανισης του καθε σκορ πχ το 0-0 εμφανιστηκηκε 22 φορες, το 1-0 18 φορες κοκ ο νεος πινακας μου θελω να ειναι της μορφης: 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 οπου αντι για μηδενικα θα ειναι οι συχνοτητες (τα rownames ειναι τα σκορ 0-10 του home, και τα colnames τα αντιστοιχα του away). Επειδη οι πινακες μου δεν ειναι μεγαλοι, δεν με νοιαζει το optimization σε αυτο τον αλγοριθμο, αρκει να γινει η δουλεια. Σκεφτηκω πως με καποιο τροπο θα τρεξω ολο τον αρχικο πινακα, και μαλιστα μια φορα και για καθε γραμμη, θα παιρνω το ζευγος χ,ψ των σκορ (πχ το 0-1 στην πρωτη γραμμη) και θα το βαζω στον πινακα στην θεση χ+1, ψ+1, με την λογικη score[i+1] = score[i+1] + 1, γι αυτο και προσπαθησα αρχικοποιώντας τον με μηδενικα. Αλλα απο εκει και περα σκαλωνω.. αν εχει κανεις καμια ιδεα θα ημουν ευγνωμων.
Aggeluska Δημοσ. 8 Οκτωβρίου 2018 Δημοσ. 8 Οκτωβρίου 2018 σε ποια γλωσσα θα το υλοποιησεις; καλα σκεφτεσαι και στεκει αυτο που λες αν ο πινακας με τα σκορ ξεκιναει απο το 1 και οχι απο το 0.
marios28 Δημοσ. 8 Οκτωβρίου 2018 Δημοσ. 8 Οκτωβρίου 2018 Καθώς διατρέχεις τις ομάδες, παίρνεις τις τιμές των στηλών FTHG και FTAG. Οι τιμές είναι η γραμμή και στήλη αντίστοιχα του δισδιάστατου πίνακα. Οπότε αυξάνεις το περιεχόμενο του δισδιάστατου πίνακα (σκορ) κατά 1. score[FTHG][FTAG] = score[FTHG][FTAG] + 1
Lanike71 Δημοσ. 8 Οκτωβρίου 2018 Δημοσ. 8 Οκτωβρίου 2018 (επεξεργασμένο) Αν θες να δουλέψεις με πίνακες, δούλεψε με R καλύτερα. Κάνε εισαγωγή το csv και μετά είναι 2 γραμμές δουλειά. Αυτό που κάνω στο κάνει μονοδιάστατο πίνακα όμως με έτοιμα τα σκορ και τη συχνότητα: Αφού διαβάσεις το csv σε dataframe, έστω Πρωτάθλημα Ιταλία 2011-12: my_results <- paste(italy_1112$FTHG,italy_1112$FTAG, sep = "-") table(my_results) 0-0 0-1 0-2 0-3 0-4 0-5 1-0 1-1 1-2 1-3 1-4 2-0 2-1 2-2 2-3 3-0 3-1 3-2 3-3 3-4 4-0 4-1 44 26 22 7 2 1 33 36 22 10 2 41 30 25 3 16 17 8 4 1 6 9 4-2 4-3 4-4 5-0 5-1 5-2 5-3 5-4 6-1 6-3 4 1 2 1 2 1 1 1 1 1 Συχνότητα εμφάνισης, πχ 1-3 = 10 φορές. Επεξ/σία 8 Οκτωβρίου 2018 από Lanike71
bahamut_zero Δημοσ. 8 Οκτωβρίου 2018 Μέλος Δημοσ. 8 Οκτωβρίου 2018 (επεξεργασμένο) Καλημερα, ευχαριστω για τις απαντησεις. Τελικα σε R θα γινει, αλλα δεν ηθελα να περιορισω τις απαντησεις. ευχαριστω καταρχην. το σκεφτηκα αυτο με την table, αλλα το προβλημα μου ειναι πως θα μετρησει τα actual scores και στο 10-10 πχ δεν θα βαλει μηδεν. Ετσι δεν θα εχω ενα σταθερο array 1*121 στηλες, για να το γυρισω μετα σε πινακα. αυτον τον πινακα θα τον δημιουργησω μετα και για αλλα αρχεια να κανω καποιες συγκρισεις, οποτε θελω να ναι τελικα ολοι ιδιοι ως προς τις διαστασεις. Edit: Νομιζω το βρηκα for (i in 1:nrow(mydata)) { x = mydata$FTHG y = mydata$FTAG posX = x + 1 posY = y + 1 score[posX, posY] = score[posX, posY] + 1 } Επεξ/σία 8 Οκτωβρίου 2018 από bahamut_zero
k33theod Δημοσ. 8 Οκτωβρίου 2018 Δημοσ. 8 Οκτωβρίου 2018 (επεξεργασμένο) Μία άλλη λύση εφόσον πας με python. Βάλε όλα τα σκορ σε μία λίστα. scores = [(0,1),(0,2),(0,4),(0,2),(0,0),(0,0),(0,0),(0,0)]#η σειρά δεν έχει σημασία μετά >>> from collections import Counter >>> scor_count = Counter(scores) >>> scor_count Counter({(0, 0): 4, (0, 2): 2, (0, 1): 1, (0, 4): 1}) και από αυτό με λίγο κόπο παράγεις το τετράγωνο που θες. score_square[j]=scor_count[(i,j)] θέλει λίγο δουλειά με τα i,j Αν και προτείνω να το αφήσεις σαν Counter object έχει ωραία methods για να επεξεργασία στατιστικά κ.α https://docs.python.org/3/library/collections.html?highlight=counter#collections.Counter Επεξ/σία 8 Οκτωβρίου 2018 από k33theod 2
Lanike71 Δημοσ. 8 Οκτωβρίου 2018 Δημοσ. 8 Οκτωβρίου 2018 Βασικά θες να ξέρεις και αυτά που δεν εμφανίζονται...Είσαι σίγουρος ότι σταματούν στα 10 γκολ οι ομάδες; Επίσης, πρόσεξε να υπάρχουν γκολ στις στήλες, αλλιώς θα σου πετάξει error (παράδειγμα, ματς κερδισμένο στα χαρτιά).
bahamut_zero Δημοσ. 8 Οκτωβρίου 2018 Μέλος Δημοσ. 8 Οκτωβρίου 2018 Οχι, σε καποιο πρωταθλημα λογικα θα βρεθει τπτ περιεργο, αλλα θα δω αν το αντιμετωπισω τοτε. θεωρητικα εχω μια καλη συγκιση στο 100% με αυτα τα 121.
Fortistis Δημοσ. 8 Οκτωβρίου 2018 Δημοσ. 8 Οκτωβρίου 2018 Σε python με tuples και Counter (όπως ήδη προτάθηκε) είναι πολύ απλό και γρήγορο. Συν ότι δεν σε περιορίζει στον μέγιστο αριθμό γραμμών/στηλών και συν ότι δεν είναι ανάγκη να κρατάς καταχώρηση για γραμμές/στήλες που δεν έχεις κάτι.
manolis940 Δημοσ. 9 Οκτωβρίου 2018 Δημοσ. 9 Οκτωβρίου 2018 Αλγοριθμικά θα έκανα το εξής. Ας πούμε ότι οι πίνακες ονομάζονται score ο οποίος περιέχει Ν διαφορετικά match και τα στοιχεία που έδωσες παραπάνω, οπότε είναι μεγέθους score[N][4] και scoreF( Πίνακας με τις συχνότητες εμφάνισης ) και έχει μέγεθος scoreF[10][10] Και στους δύο πίνακες το πρώτο στοιχείο είναι το 1 ( όχι το 0 ) Η λογική είναι να κάνουμε parsing τον πίνακα, να κοιτάμε στα fthg και τα ftag και αυτά στην ουσία θα μας δείχνουν το σημείο στο πίνακα που πρέπει να προσθέσουμε κατά 1 Για i = 1 μέχρι N { fthg = score[i][3]; ftha = score[i][4]; scoreF[fthg][ftha] = scoreF[fthg][ftha] + 1; }
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα