Convert Ruby Array into average -
say have array such:
array = [["male", 59], ["female", 31], ["unknown gender", 38]] the number within array total number of users gender. need each element of array , find average each male, female , unknown , set them new array looks this:
new_array = [["male", 46], ["female", 24], ["unknown gender", 30]] where 2nd value within tuple average.
i have tried setting such:
new_array = [] sum = 0 array.each |k,v| sum += v new_array << [k,(v/sum)*100] end my new array turns out [["male", 100], ["female", 0], ["unknown gender", 0]]
ive tried few different things , cannot figure out im doing wrong. help great.
there 2 issues here.
the first doing integer partition @ (v/sum). result of not expect, should turn v float: (v.to_f/sum).
the sec problem using sum variable before actually contains sum.
putting these 2 together:
array = [["male", 59], ["female", 31], ["unknown gender", 38]] new_array = [] sum = 0 # calculating sum before it's used in partition below. array.each { |_, v| sum += v } array.each |k, v| new_array << [k, ((v.to_f / sum) * 100).round] end # => [["male", 46], ["female", 24], ["unknown gender", 30]] ruby arrays
No comments:
Post a Comment