I need to calculate the frequency of individuals by age and marital status so normally I'd use:
table(age, marital_status)
However each individual has a different weight after the sampling of the data. How do I incorporate this into my frequency table?
You can use function svytable
from package survey
, or wtd.table
from rgrs
.
EDIT : rgrs
is now called questionr
:
df <- data.frame(var = c("A", "A", "B", "B"), wt = c(30, 10, 20, 40))
library(questionr)
wtd.table(x = df$var, weights = df$wt)
# A B
# 40 60
That's also possible with dplyr
:
library(dplyr)
count(x = df, var, wt = wt)
# # A tibble: 2 x 2
# var n
# <fctr> <dbl>
# 1 A 40
# 2 B 60
Just for the sake of completeness, using base R:
df <- data.frame(var = c("A", "A", "B", "B"), wt = c(30, 10, 20, 40))
aggregate(x = list("wt" = df$wt), by = list("var" = df$var), FUN = sum)
var wt
1 A 40
2 B 60
Or with the less cumbersome formula notation:
aggregate(wt ~ var, data = df, FUN = sum)
var wt
1 A 40
2 B 60
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With