Search code examples
rweighted

¿How do apply weights to my data frame in r?


So I want is to apply weights to my observations from my data frame, also I already have an entire column with the weights that I want to apply to my data.

So this how my data frame looks like.

weight count
3 67
7 355
8 25
7 2

And basically what I want is to weight each value of my COUNT column with the respective weight of my column WEIGHT. For example, the value 67 of of my column Count should be weighted by 3 and the value of 355 of my column Count should be weighted by 7 and so on.

I try to use this code from the questionr package.

wtd.table(data1$count, weights = data1$weight)

But this code altered my data frame and end up reducing my 1447 rows to just 172 entries. What I want is to maintain my exact number of entries.

The output that I want, would be something like this. I just want to add another column to my data frame with the weighted values.

Count Count applying weights
67 ####
355 ###

Solution

  • I am still not sure how to apply weights to the count data in the way you want. I just want to show that you can create a new column based on the previous column in a convenient way by using dplyr. For example:

    mydf
    #  weight count
    # 1      3    67
    # 2      7   355
    # 3      8    25
    # 4      7     2
    
    mydf %>% mutate(weightedCount = weight*count, 
                    percentRank = percent_rank(weightedCount), 
                    cumDist = cume_dist(weightedCount))
    
    #  weight count weightedCount percentRank cumDist
    # 1      3    67           201   0.6666667    0.75
    # 2      7   355          2485   1.0000000    1.00
    # 3      8    25           200   0.3333333    0.50
    # 4      7     2            14   0.0000000    0.25
    

    Here, weightedCount is multiplication of weight and count, percentRank shows the rank of each data in weightedCount and cumDist shows cumulative distribution of the data in weightedCount.

    This is an example. You can create another column and apply other functions in the similar way.